Pandas 数据处理与分析精粹
基础知识
安装
pip install pandas
导入
import pandas as pd
创建数据结构
- Series:一维数组,带索引.
s = pd.Series([1, 3, 5, np.nan, 6, 8])
- DataFrame:二维表格型数据结构,带行索引和列索引.
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
常用函数
- 读取数据:
pd.read_csv('file.csv')
,pd.read_excel('file.xlsx')
,pd.read_sql_query('query', connection)
- 查看数据:
df.head()
,df.tail()
,df.info()
,df.describe()
- 索引和切片:
- 按标签索引:
df.loc[0, 'A']
,df.loc[[0, 1], ['A', 'B']]
- 按位置索引:
df.iloc[0, 0]
,df.iloc[[0, 1], [0, 1]]
- 数据清洗:
- 缺失值处理:
df.dropna()
,df.fillna(value=0)
- 重复值处理:
df.drop_duplicates()
- 数据类型转换:
df['A'] = df['A'].astype('float')
- 数据排序:
df.sort_values(by='A')
,df.sort_index()
- 数据合并:
- 水平合并:
pd.concat([df1, df2], axis=1)
- 垂直合并:
pd.concat([df1, df2], axis=0)
- 合并表格:
pd.merge(df1, df2, on='key')
高级应用
数据分组与聚合
- 分组:
grouped = df.groupby('A')
- 聚合:
grouped.sum()
,grouped.mean()
,grouped.agg(['sum', 'mean'])
数据透视表
- 创建透视表:
pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'])
时间序列分析
- 日期范围:
pd.date_range('20230101', periods=6)
- 时间戳:
pd.Timestamp('20230101')
- 时间偏移:
pd.Timedelta(days=3)
- 时间数据转换:
pd.to_datetime('20230101')
高级索引
- 布尔索引:
df[df['A'] > 2]
- 层级索引:
- 创建:
df = pd.DataFrame(np.random.randn(4, 2), index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns=['A', 'B'])
- 索引:
df.loc['a']
,df.xs('b', level=0)
数据可视化
- 基本图表:
df.plot(kind='line')
,df.plot(kind='bar')
,df.plot(kind='hist')
- 复杂图表:
df.plot(kind='scatter', x='A', y='B')
,df.plot(kind='box')
案例
案例 1:数据清洗 - 处理缺失值
df = pd.read_csv('data.csv')
print(df.isnull().sum