python pandas模块详解
2024年7月3日大约 2 分钟约 716 字
pandas 概述
pandas是一个功能强大的数据处理和分析库,主要用于操作结构化数据。它建立在NumPy之上,提供了高效的、易于使用的数据结构和数据分析工具。
安装: pip install pandas
主要数据结构:
- Series:一维数组,带有标签(索引),类似于Python的字典。
- DataFrame:二维数据表格,带有行索引和列标签,类似于电子表格或SQL表。
创建Series和DataFrame:
import pandas as pd
# 创建Series
s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
# 创建DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
读取和写入数据
pandas支持从多种文件格式读取和写入数据,包括CSV、Excel、SQL数据库、JSON等。
# 读取CSV文件
df = pd.read_csv('data.csv')
# 写入CSV文件
df.to_csv('output.csv', index=False)
数据选择和筛选
pandas提供了多种方法来选择和筛选数据,包括基于标签、位置和条件的选择。
# 选择列
print(df['Name'])
# 选择行
print(df.loc[0]) # 基于标签
print(df.iloc[0]) # 基于位置
# 条件筛选
print(df[df['Age'] > 30])
数据清洗
pandas提供了丰富的工具来清洗和预处理数据,包括处理缺失值、重复值、数据转换等。
# 处理缺失值
df.dropna() # 删除缺失值
df.fillna(0) # 填充缺失值
# 处理重复值
df.drop_duplicates() # 删除重复值
# 数据转换
df['Age'] = df['Age'].astype(float)
数据变形和重塑
pandas提供了多种方法来重塑和变形数据,包括透视表、堆叠和取消堆叠、重设索引等。
# 透视表
pivot_table = df.pivot_table(values='Salary', index='Name', columns='Age')
# 堆叠和取消堆叠
stacked = df.stack()
unstacked = stacked.unstack()
# 重设索引
df.reset_index()
df.set_index('Name')
数据合并和连接
pandas提供了多种方法来合并和连接数据,包括连接(merge)、连接(join)和连接(concat)等。
# 合并两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value': [4, 5, 6]})
merged = pd.merge(df1, df2, on='key')
# 连接两个DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'], 'D': ['D0', 'D1', 'D2']})
concatenated = pd.concat([df1, df2], axis=1)
时间序列处理
pandas提供了强大的时间序列处理功能,包括日期解析、时间索引、重采样和时间序列移动窗口等。
# 创建时间序列
date_range = pd.date_range(start='2022-01-01', periods=10, freq='D')
time_series = pd.Series(range(10), index=date_range)
# 重采样
resampled = time_series.resample('D').sum()
# 移动窗口
rolling_mean = time_series.rolling(window=3).mean()
分组操作
pandas提供了分组操作(groupby),用于对数据进行分组并进行聚合操作。
grouped = df.groupby('Age').sum()
print(grouped)
数据可视化
虽然pandas不是一个专门的数据可视化库,但它与Matplotlib集成良好,可以方便地进行数据可视化。
import matplotlib.pyplot as plt
df.plot(x='Name', y='Salary', kind='bar')
plt.show()