本文目录导读:

Python的Pandas库是数据分析的核心工具,它提供了大量高效、灵活的数据处理功能,对于数据分析,最常用的功能可以归纳为以下几个核心方面:
数据读取与写入(I/O)
这是数据分析的第一步和最后一步。
- 读取:
pd.read_csv('file.csv'):读取 CSV 文件(最常用)。pd.read_excel('file.xlsx', sheet_name='Sheet1'):读取 Excel 文件。pd.read_sql('SELECT * FROM table', connection):从 SQL 数据库读取。pd.read_json('data.json'):读取 JSON 格式数据。pd.read_parquet('data.parquet'):读取 Parquet 格式(大数据场景常用,速度极快)。
- 写入:
df.to_csv('output.csv', index=False):保存为 CSV。df.to_excel('output.xlsx', sheet_name='Data'):保存为 Excel。df.to_sql('table_name', con, if_exists='replace'):写入数据库。
数据预览与基本信息
在拿到数据后,先了解数据的全貌。
df.head(n)/df.tail(n):查看前/后 n 行数据(默认 5 行)。df.info():查看数据集的概览,包括索引类型、列名、非空值数量、数据类型(dtype)及内存使用量。这是最常用的诊断方法。df.describe():生成数值型列的描述性统计(计数、均值、标准差、最小值、四分位数、最大值)。df.shape:返回 (行数, 列数) 的元组。df.columns:返回列名列表。df.dtypes:查看每列的数据类型。
数据选择与过滤
这是清理和准备数据时最频繁的操作。
- 列选择:
df['column_name']:选择单列(返回 Series)。df[['col1', 'col2']]:选择多列(返回 DataFrame)。
- 行选择(过滤):
df[df['age'] > 30]:布尔索引,选择年龄大于30的行。df.query('age > 30 & city == "北京"'):使用类似 SQL 的表达式进行复杂过滤(可读性高)。
- 按位置/标签选择(
.iloc和.loc):df.iloc[0:5, 2:4]:按整数位置选择(前5行,第2到第4列)。df.loc[df['score'] > 90, ['name', 'score']]:按标签或布尔数组选择(选择分数>90的学生的名字和分数)。
数据清洗(重中之重)
现实中大部分数据都是不完美的,清洗占据了数据分析大量时间。
- 处理缺失值:
df.isnull().sum():检查每列有多少缺失值。df.dropna():删除包含缺失值的行(axis=0)或列(axis=1)。df.fillna(value):填充缺失值(df.fillna(0)或df['age'].fillna(df['age'].mean()))。
- 处理重复值:
df.duplicated():检查重复行。df.drop_duplicates():删除重复行(可指定subset=['col1']按列去重)。
- 数据类型转换:
df['date'].astype('datetime64[ns]'):转换列的数据类型。pd.to_datetime(df['date_column']):万能日期类型转换函数。df['price'].astype(float):转换为浮点数。
- 修改列名:
df.rename(columns={'old_name': 'new_name'})。df.columns = ['new_col1', 'new_col2'](直接赋值,必须长度相同)。
- 替换与映射:
df['gender'].replace({'男': 1, '女': 0}):替换值。df['category'].map({'A': '优秀', 'B': '良好'}):映射新值。
数据分组与聚合(分组分析)
这是数据分析的核心,用于探索各维度的统计规律。
- 基础分组:
df.groupby('department')['salary'].mean():按部门分组,计算平均工资。
- 多列分组与多聚合:
df.groupby(['city', 'gender']).agg({'age': 'mean', 'income': 'sum', 'id': 'count'}):按城市和性别分组,同时计算平均年龄、收入总和、用户数量。
- 常用聚合函数:
sum(),mean(),count(),max(),min(),std(),var(),median()。 - 透视表(Pivot Tables):
pd.pivot_table(df, values='sales', index='region', columns='month', aggfunc='sum', fill_value=0):生成类似 Excel 透视表的交叉分析报表。
数据合并与连接
当数据分散在多个表时,需要将它们合并。
- 类似 SQL 的 Join:
pd.merge(df1, df2, on='key', how='inner'):内连接(inner),外连接(left,right,outer)。
- 按行/列拼接:
pd.concat([df1, df2], axis=0):纵向拼接(增加行)。pd.concat([df1, df2], axis=1):横向拼接(增加列)。
数据排序与排名
- 排序:
df.sort_values(by='price', ascending=False):按价格降序排列。df.sort_index():按行索引排序。
- 排名:
df['rank'] = df['score'].rank(method='dense', ascending=False):为分数排名(dense方法确保并列不占位次)。
时间序列分析
- 创建日期范围:
pd.date_range('2024-01-01', periods=100, freq='D')生成日期序列。
- 设置时间索引:
df.set_index('date', inplace=True):将日期列设为索引。
- 重采样:
df.resample('M').mean():按月(M)重采样,计算月均值。df.resample('W').sum():按周求和。
- 移动窗口与差分:
df['sales_ma'] = df['sales'].rolling(window=7).mean():计算7日移动平均线。df['sales_diff'] = df['sales'].diff():计算环比差值。
常用的便捷方法
df.apply(func, axis=1):对每一行或每一列应用自定义函数。注意:如果追求性能,优先考虑向量化操作或transform。df.transform(func):执行与groupby结合的分组变换(计算组内百分比)。df.pipe(func):实现函数式编程,将整个 DataFrame 传递给一个函数,非常利于创建可读性高的数据处理管道。df.sample(n=10):随机抽取 n 行数据。
一个完整的小例子(快速体验)
import pandas as pd
import numpy as np
# 1. 读取数据
df = pd.read_csv('sales_data.csv') # 假设有这样一个文件
# 2. 预览
print(df.head())
print(df.info())
# 3. 清洗
df.dropna(subset=['price'], inplace=True) # 删除价格缺失的行
df['date'] = pd.to_datetime(df['date']) # 转换日期格式
df.fillna({'quantity': 0}, inplace=True) # 数量缺失填充0
# 4. 分析:按类别统计总销售额
df['total_sales'] = df['price'] * df['quantity']
category_summary = df.groupby('category')['total_sales'].sum().sort_values(ascending=False)
print(category_summary)
# 5. 时间序列:按周统计销量趋势
weekly_sales = df.set_index('date').resample('W')['total_sales'].sum()
print(weekly_sales.head(10))
如果你刚开始学,建议先重点掌握 1-5 部分(读写、预览、选择、清洗、分组),它们能覆盖日常工作中 80% 以上的场景,Pandas 官方文档的 10 Minutes to pandas 是极好的入门教程。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播