Pandas 技巧
Pandas 是 Python 中最常用的数据处理库,提供了强大的数据操作功能。
数据读取
python
import pandas as pd
# 读取 CSV
df = pd.read_csv('data.csv')
# 读取 Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取 JSON
df = pd.read_json('data.json')
# 读取 SQL
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table', conn)数据查看
python
# 查看前几行
print(df.head())
# 查看后几行
print(df.tail())
# 查看数据信息
print(df.info())
# 查看统计摘要
print(df.describe())
# 查看列名
print(df.columns)
# 查看形状
print(df.shape)数据选择
python
# 选择列
df['column_name']
df[['col1', 'col2']]
# 选择行
df.loc[0] # 按标签
df.iloc[0] # 按位置
# 条件选择
df[df['age'] > 30]
df[(df['age'] > 30) & (df['gender'] == 'male')]
# 使用 query
df.query('age > 30 and gender == "male"')数据清洗
python
# 处理缺失值
df.dropna() # 删除缺失值
df.fillna(0) # 填充缺失值
df.fillna(df.mean()) # 用均值填充
# 处理重复值
df.drop_duplicates()
# 数据类型转换
df['age'] = df['age'].astype(int)
df['date'] = pd.to_datetime(df['date'])
# 字符串处理
df['name'] = df['name'].str.strip()
df['name'] = df['name'].str.lower()数据转换
python
# 添加新列
df['total'] = df['price'] * df['quantity']
# 分组聚合
df.groupby('category')['value'].sum()
df.groupby('category')['value'].agg(['sum', 'mean', 'count'])
# 透视表
pd.pivot_table(df, values='value', index='category', columns='date', aggfunc='sum')
# 合并数据
pd.merge(df1, df2, on='key')
pd.concat([df1, df2])
# 排序
df.sort_values('value', ascending=False)
# 排名
df['rank'] = df['value'].rank(method='dense')性能优化
python
# 使用高效的数据类型
df['category'] = df['category'].astype('category')
# 使用 query 代替条件选择
df.query('value > 100')
# 使用 eval 进行计算
df.eval('total = price * quantity')
# 分块处理大数据
for chunk in pd.read_csv('large_data.csv', chunksize=10000):
process(chunk)可视化
python
# 内置可视化
df.plot(kind='line')
df.plot(kind='bar')
df.plot(kind='hist')
# 散点图
df.plot(kind='scatter', x='x', y='y')
# 箱线图
df.boxplot(column='value', by='category')注意事项
- 内存管理: 处理大数据时注意内存使用
- 索引设置: 合理设置索引可以提高查询效率
- 链式操作: 链式操作可能导致性能问题,可使用 assign 替代
- 类型转换: 注意数据类型转换的正确性