Pandas是Python数据分析的核心库,提供了丰富的数据结构和数据处理方法。本文将系统介绍Pandas中最常用的工具方法,涵盖数据读写、查看、清洗、转换、分析和可视化等各个方面。
Pandas提供了多种数据读取函数,支持从不同格式的文件中导入数据:
pythonimport pandas as pd
# 从CSV文件读取
df = pd.read_csv('data.csv') #
# 从Excel文件读取
df = pd.read_excel('data.xlsx') #
# 从SQL数据库读取
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table', conn) #
# 从JSON字符串读取
json_string = '{"name": "John", "age": 30}'
df = pd.read_json(json_string) #
# 从HTML页面读取
url = 'https://example.com'
dfs = pd.read_html(url) #
将处理后的数据保存到文件:
python# 写入CSV文件
df.to_csv('output.csv') #
# 写入Excel文件
df.to_excel('output.xlsx') #
# 写入SQL数据库
df.to_sql('table_name', conn) #
# 写入JSON文件
df.to_json('output.json') #
python# 查看前n行数据,默认5行
df.head() #
# 查看后n行数据,默认5行
df.tail() #
# 随机查看n行数据
df.sample(3) #
python# 获取描述性统计信息
df.describe() #
# 获取数据类型和非空值信息
df.info() #
# 获取数据形状(行数,列数)
df.shape #
# 获取列名列表
df.columns #
# 获取索引信息
df.index #
python# 选择单列
df['column_name'] #
# 选择多列
df[['col1', 'col2']] #
# 使用filter选择列
df.filter(items=['col1', 'col2']) #
df.filter(regex='regex_pattern') #
python# 通过标签选择(loc)
df.loc[row_label] #
df.loc[row_label, 'column_name'] #
# 通过位置选择(iloc)
df.iloc[row_index] #
df.iloc[row_index, col_index] #
# 布尔索引
df[df['age'] > 30] #
df[df['name'].str.contains('John')] #
# query方法筛选
df.query("age > 30 & name == 'John'") #
python# 检查缺失值
df.isnull() #
df.notnull() #
# 删除缺失值
df.dropna() #
# 填充缺失值
df.fillna(value) #
df.fillna(method='ffill') # 向前填充
python# 检查重复值
df.duplicated() #
# 删除重复值
df.drop_duplicates() #
python# 转换数据类型
df['column'].astype('float') #
# 转换日期时间
pd.to_datetime(df['date_column']) #
python# 按值排序
df.sort_values('column', ascending=False) #
# 按索引排序
df.sort_index() #
python# 基本分组
df.groupby('column').mean() #
# 多列分组
df.groupby(['col1', 'col2']).sum() #
# 自定义聚合
df.groupby('column').agg({'col1':'mean', 'col2':'sum'}) #
python# 透视表
pd.pivot_table(df, values='value', index='row', columns='col') #
# 宽表转长表(melt)
pd.melt(df, id_vars=['id'], var_name='variable', value_name='value') #
# 长表转宽表(pivot)
df.pivot(index='id', columns='variable', values='value') #
python# 简单合并(concat)
pd.concat([df1, df2], axis=0) #
# 数据库风格合并(merge)
pd.merge(df1, df2, on='key') #
# 追加数据
df1.append(df2) #
python# 转换为时间序列
df['date'] = pd.to_datetime(df['date']) #
# 重采样
df.resample('D').sum() #
# 滚动窗口计算
df.rolling(window=7).mean() #
python# 线图
df.plot.line(x='date', y='value') #
# 柱状图
df.plot.bar(x='category', y='value') #
# 散点图
df.plot.scatter(x='x', y='y') #
# 直方图
df['value'].plot.hist() #
python# 应用函数
df['column'].apply(lambda x: x*2) #
# 向量化操作
df['new'] = df['col1'] + df['col2'] #
# 唯一值计数
df['column'].value_counts() #
# 唯一值获取
df['column'].unique() #
df['column'].nunique() # 唯一值数量
# 重置索引
df.reset_index() #
python# 使用向量化操作替代循环
df['new'] = df['col1'] * df['col2'] #
# 使用eval进行表达式求值
df.eval('new = col1 + col2', inplace=True) #
# 使用query进行高效过滤
df.query('col1 > 100 & col2 < 50') #
Pandas提供了丰富的数据处理工具方法,从基本的数据读写到复杂的数据分析操作,涵盖了数据分析的各个环节。掌握这些方法可以显著提高数据处理效率和分析能力。根据不同的数据处理需求,可以选择合适的方法组合:
表:Pandas常用方法分类总结
功能类别 | 常用方法 | 典型应用场景 |
---|---|---|
数据读写 | read_csv/read_excel, to_csv/to_excel | 数据导入导出 |
数据查看 | head/tail, describe, info | 数据初步探索 |
数据选择 | loc/iloc, query, filter | 数据子集提取 |
数据清洗 | dropna/fillna, drop_duplicates | 数据质量处理 |
数据转换 | groupby, pivot, melt | 数据重塑与聚合 |
数据合并 | concat, merge, append | 多数据集整合 |
时间序列 | to_datetime, resample | 时间相关分析 |
数据可视化 | plot.line/bar/scatter | 数据图形展示 |
通过灵活运用这些方法,可以高效完成从数据清洗到分析建模的完整数据分析流程。对于更高级的应用,还可以结合Pandas的扩展功能如窗口操作、自定义函数应用等实现更复杂的数据处理需求。