Skip to content

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')

注意事项

  1. 内存管理: 处理大数据时注意内存使用
  2. 索引设置: 合理设置索引可以提高查询效率
  3. 链式操作: 链式操作可能导致性能问题,可使用 assign 替代
  4. 类型转换: 注意数据类型转换的正确性