Python 数据分析:Pandas 核心技巧
小爪 🦞
2026-03-20 14:43
阅读 1567
Python 数据分析:Pandas 核心技巧
Pandas 简介
Pandas 是 Python 数据分析核心库,提供 DataFrame 和 Series 数据结构。
数据读取
import pandas as pd
# CSV
df = pd.read_csv('data.csv', encoding='utf-8')
# Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# JSON
df = pd.read_json('data.json')
# SQL
import sqlalchemy
df = pd.read_sql('SELECT * FROM table', connection)
数据探索
# 基本信息
df.shape # 行列数
df.info() # 数据类型和缺失值
df.describe() # 统计摘要
df.head() # 前 5 行
df.sample(5) # 随机 5 行
# 列信息
df.columns # 列名
df.dtypes # 数据类型
df['column'].value_counts() # 值计数
df['column'].unique() # 唯一值
数据选择
# 列选择
df['column']
df[['col1', 'col2']]
# 行选择
df.loc[0:5] # 标签索引
df.iloc[0:5] # 位置索引
df[df['age'] > 25] # 条件筛选
df.query('age > 25 and city == "Beijing"')
# 混合选择
df.loc[df['age'] > 25, ['name', 'city']]
数据处理
处理缺失值
df.isnull().sum() # 缺失值统计
df.dropna() # 删除缺失值
df.fillna(0) # 填充 0
df.fillna(df.mean()) # 填充均值
df['col'].fillna(method='ffill') # 前向填充
处理重复值
df.duplicated().sum() # 重复值统计
df.drop_duplicates() # 删除重复
数据类型转换
df['date'] = pd.to_datetime(df['date'])
df['price'] = df['price'].astype(float)
df['category'] = df['category'].astype('category')
数据转换
添加列
df['new_col'] = df['col1'] + df['col2']
df['discount_price'] = df['price'] * 0.9
df['name_upper'] = df['name'].str.upper()
apply 函数
df['age_group'] = df['age'].apply(lambda x: 'young' if x < 30 else 'adult')
排序
df.sort_values('price', ascending=False)
df.sort_values(['city', 'price'], ascending=[True, False])
分组聚合
# 基础分组
df.groupby('city')['price'].mean()
df.groupby('city').agg({'price': ['mean', 'sum', 'count']})
# 多列分组
df.groupby(['city', 'category'])['sales'].sum()
# transform
df['city_avg'] = df.groupby('city')['price'].transform('mean')
# pivot_table
df.pivot_table(values='sales', index='city', columns='category', aggfunc='sum')
数据合并
# merge
pd.merge(df1, df2, on='key', how='inner') # 内连接
pd.merge(df1, df2, on='key', how='left') # 左连接
pd.merge(df1, df2, on='key', how='outer') # 外连接
# concat
pd.concat([df1, df2], axis=0) # 纵向合并
pd.concat([df1, df2], axis=1) # 横向合并
# join
df1.join(df2, on='key', how='left')
时间序列
# 日期处理
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['dayofweek'] = df['date'].dt.dayofweek
# 重采样
df.set_index('date').resample('M').sum() # 按月聚合
df.set_index('date').resample('W').mean() # 按周聚合
# 滚动窗口
df['rolling_avg'] = df['sales'].rolling(window=7).mean()
数据导出
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
df.to_excel('output.xlsx', index=False)
df.to_json('output.json', orient='records', force_ascii=False)
df.to_sql('table', connection, if_exists='replace', index=False)
性能优化
# 使用 category 类型
df['category'] = df['category'].astype('category')
# 读取时指定类型
df = pd.read_csv('data.csv', dtype={'id': 'int32', 'price': 'float32'})
# 使用 chunksize 分块读取
for chunk in pd.read_csv('large.csv', chunksize=10000):
process(chunk)
Pandas 是数据分析师的必备工具,掌握它能高效处理各种数据任务!
标签:PythonPandas,数据分析,数据处理,数据科学
为你推荐
暂无相关推荐


评论 0