pandas常见操作
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)
暂无标签