Pandas从零开始使用教程
一、Pandas简介与安装
Pandas是Python的核心数据分析库,专为处理结构化数据(如表格、时间序列)设计。其核心数据结构为DataFrame(二维表)和Series(一维数组)。
安装命令:
pip install pandas numpy # 建议同时安装NumPy(数值计算基础库)
二、基础数据结构
1. Series(一维带标签数组)
import pandas as pd
# 创建Series
data = [10, 20, 30]
s = pd.Series(data, index=['a', 'b', 'c'])
print(s)
输出:
a 10
b 20
c 30
dtype: int64
2. DataFrame(二维表格)
# 创建DataFrame
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'城市': ['北京', '上海', '广州']}
df = pd.DataFrame(data)
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
三、数据读取与保存
支持CSV、Excel、SQL等格式:
# 读取CSV文件
df = pd.read_csv('data.csv')
# 保存为Excel
df.to_excel('output.xlsx', index=False) # index=False表示不保存行索引
四、数据查看与筛选
1. 查看数据
df.head(2) # 查看前2行
df.tail(3) # 查看后3行
df.info() # 查看数据类型和内存
df.describe() # 统计数值型列的分布(均值、标准差等)
2. 数据筛选
# 按列筛选
df['姓名'] # 选择单列
df[['姓名', '年龄']] # 选择多列
# 按行筛选(条件过滤)
df[df['年龄'] > 25] # 年龄大于25的行
df[(df['城市']=='北京') | (df['年龄']<30)] # 多条件组合
五、数据处理
1. 处理缺失值
# 检测缺失值
df.isnull().sum()
# 填充缺失值
df['年龄'].fillna(df['年龄'].mean(), inplace=True) # 用均值填充
df.dropna(subset=['城市'], inplace=True) # 删除“城市”列为空的行
2. 类型转换
df['年龄'] = df['年龄'].astype(float) # 整数转浮点数
df['入职日期'] = pd.to_datetime(df['入职日期']) # 字符串转日期
3. 添加/删除列
# 添加列
df['是否青年'] = df['年龄'] < 30
# 删除列
df.drop(columns=['城市'], inplace=True)
六、数据分组与聚合
# 按城市分组,计算平均年龄
grouped = df.groupby('城市')['年龄'].mean()
print(grouped)
# 多级聚合(同时计算均值和最大值)
result = df.groupby('城市').agg({'年龄': ['mean', 'max'], '薪资': 'sum'})
七、数据合并
# 创建第二个DataFrame
df2 = pd.DataFrame({'姓名': ['张三', '赵六'], '薪资': [15000, 20000]})
# 按姓名合并(类似SQL JOIN)
merged_df = pd.merge(df, df2, on='姓名', how='left') # 左连接
八、时间序列处理
# 创建时间序列数据
date_rng = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
ts = pd.Series(range(len(date_rng)), index=date_rng)
# 按周重采样
weekly = ts.resample('W').mean() # 计算每周均值
九、实战案例:销售数据分析
# 1. 读取数据
sales = pd.read_csv('sales_data.csv')
# 2. 清洗数据
sales.dropna(subset=['销售额'], inplace=True) # 删除销售额缺失的行
sales['日期'] = pd.to_datetime(sales['日期']) # 日期格式化
# 3. 分析月度销售额
sales['月份'] = sales['日期'].dt.month
monthly_sales = sales.groupby('月份')['销售额'].sum()
# 4. 可视化(需安装matplotlib)
import matplotlib.pyplot as plt
monthly_sales.plot(kind='bar')
plt.title('月度销售额趋势')
plt.show()
十、进阶技巧
- 向量化操作:避免循环,用
df.apply()替代df['年龄等级'] = df['年龄'].apply(lambda x: '青年' if x<30 else '中年') - 高性能查询:对大型数据集用
pd.read_csv(chunksize=5000)分块读取 - 内存优化:用
df.astype('category')转换低基数分类列
附:学习资源推荐
- 官方文档:pandas.pydata.org
- 实战书籍:《Python for Data Analysis》(Wes McKinney著)
掌握以上内容,您已具备Pandas基础数据处理能力!后续可深入学习时间序列分析、机器学习整合等专题。
693

被折叠的 条评论
为什么被折叠?



