Pandas 的常见操作,涵盖了数据读取、清洗、转换、分析和导出等方面。


1. 数据读取

Pandas 支持从多种文件格式读取数据,如 CSV、Excel、JSON、SQL 等。

读取 CSV 文件

import pandas as pd

df = pd.read_csv('data.csv')

读取 Excel 文件

df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

读取 JSON 文件

df = pd.read_json('data.json')

从 SQL 数据库读取

from sqlalchemy import create_engine

# 创建数据库连接
engine = create_engine('sqlite:///database.db')
df = pd.read_sql('SELECT * FROM table_name', engine)

2. 数据查看

查看前几行数据

df.head()  # 默认显示前 5 行
df.head(10)  # 显示前 10 行

查看后几行数据

df.tail()  # 默认显示后 5 行

查看数据基本信息

df.info()  # 显示列名、数据类型和非空值数量

查看统计信息

df.describe()  # 显示数值列的统计信息(如均值、标准差等)

查看列名

df.columns

查看索引

df.index

3. 数据选择

选择单列

df['column_name']

选择多列

df[['column1', 'column2']]

选择行

df.loc[0]  # 选择第一行
df.loc[0:5]  # 选择前 5 行
df.iloc[0]  # 使用索引选择第一行

条件筛选

df[df['column_name'] > 10]  # 筛选出列值大于 10 的行
df[(df['column1'] > 10) & (df['column2'] < 20)]  # 多条件筛选

4. 数据清洗

处理缺失值

df.dropna()  # 删除包含缺失值的行
df.fillna(0)  # 用 0 填充缺失值
df.fillna(df.mean())  # 用列均值填充缺失值

删除列

df.drop('column_name', axis=1, inplace=True)  # 删除指定列

删除重复值

df.drop_duplicates()  # 删除重复行

替换值

df['column_name'].replace({'old_value': 'new_value'}, inplace=True)

更改数据类型

df['column_name'] = df['column_name'].astype('int')  # 转换为整数类型

5. 数据转换

添加新列

df['new_column'] = df['column1'] + df['column2']

重命名列

df.rename(columns={'old_name': 'new_name'}, inplace=True)

排序

df.sort_values('column_name', ascending=False)  # 按列值降序排序

分组聚合

df.groupby('column_name').mean()  # 按列分组并计算均值
df.groupby('column_name').agg({'column1': 'sum', 'column2': 'mean'})  # 多列聚合

数据透视表

df.pivot_table(values='value_column', index='row_column', columns='column_column', aggfunc='mean')

6. 数据合并

合并两个 DataFrame

pd.merge(df1, df2, on='key_column', how='inner')  # 内连接

拼接 DataFrame

pd.concat([df1, df2], axis=0)  # 垂直拼接
pd.concat([df1, df2], axis=1)  # 水平拼接

7. 数据导出

导出为 CSV

df.to_csv('output.csv', index=False)

导出为 Excel

df.to_excel('output.xlsx', index=False)

导出为 JSON

df.to_json('output.json', orient='records')

导出到 SQL 数据库

df.to_sql('table_name', engine, if_exists='replace', index=False)

8. 其他常用操作

应用函数

df['column_name'].apply(lambda x: x * 2)  # 对列应用函数

遍历行

for index, row in df.iterrows():
    print(row['column_name'])

设置索引

df.set_index('column_name', inplace=True)

重置索引

df.reset_index(inplace=True)

9. 示例:完整数据处理流程

import pandas as pd

# 读取数据
df = pd.read_csv('data.csv')

# 查看数据
print(df.head())

# 数据清洗
df.dropna(inplace=True)  # 删除缺失值
df['new_column'] = df['column1'] + df['column2']  # 添加新列

# 数据筛选
df_filtered = df[df['column1'] > 10]

# 数据分组聚合
df_grouped = df_filtered.groupby('category').agg({'column1': 'sum', 'column2': 'mean'})

# 导出数据
df_grouped.to_csv('output.csv', index=False)