目錄
pandas 模塊介紹
4.1 pandas 數據結構
一、課程目標
二、Series 對象介紹
三、DataFrame 對象介紹
四、Series 和 DataFrame 在具體應用中的注意事項
(一)Series 注意事項
(二)DataFrame 注意事項
五、實戰案例
案例 1:學生成績分析
案例 2:銷售數據分析
案例 3:股票數據分析
案例 4:客戶流失分析
六、課程總結回顧
七、課后練習題
pandas 模塊介紹
pandas 是 Python 的一個開源數據分析庫,為 Python 提供了高性能、易用的數據結構和數據分析工具。它建立在 NumPy 之上,使得以 NumPy 為中心的應用變得更加簡單。pandas 的名字衍生自術語 "panel data"(面板數據)和 "Python data analysis"(Python 數據分析)。
pandas 的主要數據結構是 Series(一維數組)和 DataFrame(二維表格型數據結構),它們能夠處理各種類型的數據,無論是時間序列數據、表格數據還是矩陣數據。pandas 提供了高級數據操作功能,包括數據清洗、合并、重塑、聚合和時間序列分析等。它廣泛應用于金融、經濟、統計、社會科學等領域,是數據科學和機器學習工作流程中不可或缺的工具。
4.1 pandas 數據結構
一、課程目標
本次課程主要圍繞 pandas 的核心數據結構展開,通過理論講解和案例分析,讓學員掌握 Series 和 DataFrame 的基本概念、創建方法、數據操作及應用場景。學員學完本次課程后,能夠熟練使用 pandas 進行基礎的數據處理和分析工作。
二、Series 對象介紹
Series 是 pandas 的一維標記數組,能夠保存任何數據類型(整數、字符串、浮點數、Python 對象等)。它由兩部分組成:索引(index)和值(values)。索引在左側,值在右側。如果沒有指定索引,pandas 會自動創建一個從 0 開始的整數索引。
案例 1:基本 Series 對象的創建與操作
import pandas as pd# 創建Series對象
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print("基本Series對象:")
print(s)# 獲取值
print("\nSeries的值:")
print(s.values)# 獲取索引
print("\nSeries的索引:")
print(s.index)# 修改索引
s.index = ['a', 'b', 'c', 'd', 'e']
print("\n修改索引后的Series:")
print(s)# 通過索引訪問值
print("\n通過索引'b'訪問值:")
print(s['b'])# 通過位置訪問值
print("\n通過位置2訪問值:")
print(s[2])
這個案例展示了 Series 的基本創建方法、獲取值和索引的方式,以及如何修改索引和通過不同方式訪問值。
案例 2:帶標簽索引的 Series 對象
# 創建帶標簽索引的Series
data = {'北京': 1000, '上海': 1500, '廣州': 800, '深圳': 1200}
s = pd.Series(data)
print("帶標簽索引的Series:")
print(s)# 索引順序可以不同于字典中的鍵順序
cities = ['上海', '北京', '深圳', '成都']
s = pd.Series(data, index=cities)
print("\n指定索引順序的Series:")
print(s)# 檢測缺失數據
print("\n檢測缺失數據:")
print(s.isnull())# 數學運算
print("\nSeries乘以2:")
print(s * 2)# 布爾索引
print("\n篩選值大于1000的城市:")
print(s[s > 1000])
此案例重點展示了如何使用字典創建 Series,以及如何處理缺失數據、進行數學運算和布爾索引。
案例 3:時間序列索引的 Series 對象
# 創建時間序列索引的Series
dates = pd.date_range('20250101', periods=5)
s = pd.Series([10, 20, 30, 40, 50], index=dates)
print("時間序列索引的Series:")
print(s)# 通過日期訪問值
print("\n訪問2025年1月3日的值:")
print(s['2025-01-03'])# 訪問某個時間段的值
print("\n訪問2025年1月2日至2025年1月4日的值:")
print(s['2025-01-02':'2025-01-04'])# 時間序列切片
print("\n訪問2025年1月3日及之后的值:")
print(s['2025-01-03':])# 添加新的日期值
s['2025-01-06'] = 60
print("\n添加新日期后:")
print(s)
這個案例聚焦于時間序列索引的 Series,展示了如何創建、訪問和操作時間序列數據。
三、DataFrame 對象介紹
DataFrame 是 pandas 的二維標記數據結構,由行索引和列索引組成。它類似于電子表格、SQL 表或 Series 對象構成的字典。DataFrame 可以接受多種類型的輸入,如字典、Series、NumPy 數組、另一個 DataFrame 等。
案例 1:基本 DataFrame 對象的創建與操作
# 創建DataFrame
data = {'城市': ['北京', '上海', '廣州', '深圳', '杭州'],'人口(萬)': [2154, 2424, 1490, 1303, 980],'GDP(億)': [30320, 32680, 22859, 24222, 13509]
}
df = pd.DataFrame(data)
print("基本DataFrame對象:")
print(df)# 查看數據基本信息
print("\n數據基本信息:")
df.info()# 查看數據集行數和列數
rows, columns = df.shape# 查看數據集行數和列數
if rows < 10 and columns < 10:# 短表數據(行數少于10且列數少于10)查看全量數據信息print("\n數據全部內容信息:")print(df.to_csv(sep='\t', na_rep='nan'))
else:# 長表數據查看數據前幾行信息print("\n數據前幾行內容信息:")print(df.head().to_csv(sep='\t', na_rep='nan'))# 獲取列
print("\n獲取'城市'列:")
print(df['城市'])# 獲取行
print("\n獲取第2行:")
print(df.loc[1])# 添加新列
df['面積(km2)'] = [16410, 6340, 7434, 1997, 16853]
print("\n添加'面積'列后:")
print(df)# 計算人口密度
df['人口密度(人/km2)'] = df['人口(萬)'] * 10000 / df['面積(km2)']
print("\n計算'人口密度'列后:")
print(df)
這個案例展示了 DataFrame 的基本創建方法、獲取行列數據的方式,以及如何添加新列和進行簡單的數據計算。
案例 2:使用不同數據源創建 DataFrame
# 從CSV文件創建DataFrame
# df = pd.read_csv('data.csv')# 從Excel文件創建DataFrame
# df = pd.read_excel('data.xlsx')# 從字典列表創建DataFrame
data = [{'姓名': '張三', '年齡': 25, '性別': '男'},{'姓名': '李四', '年齡': 30, '性別': '男'},{'姓名': '王五', '年齡': 28, '性別': '女'}
]
df = pd.DataFrame(data)
print("從字典列表創建的DataFrame:")
print(df)# 從Series字典創建DataFrame
d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),'two': pd.Series([10, 20, 30, 40], index