当前位置: 代码网 > it编程>前端脚本>Python > Python数据分析Pandas全攻略

Python数据分析Pandas全攻略

2025年08月01日 Python 我要评论
一、简介python 的pandas库是数据分析的核心工具,专门处理结构化数据(如表格、时间序列等)。二、安装与导入1. 安装pip install pandas2. 导入import pandas

一、简介

python 的 pandas 库是数据分析的核心工具,专门处理结构化数据(如表格、时间序列等)。

二、安装与导入

1. 安装

pip install pandas

2. 导入

import pandas as pd  # 行业标准缩写

三、核心数据结构

1.series- 一维带标签

# 创建 series
s = pd.series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
a    10
b    20
c    30
d    40
dtype: int64

2.dataframe- 二维表格(核心)

# 创建 dataframe
data = {
    'name': ['alice', 'bob', 'charlie'],
    'age': [25, 30, 35],
    'city': ['new york', 'paris', 'london']
}
df = pd.dataframe(data)
print(df)
      name  age      city
0    alice   25  new york
1      bob   30     paris
2  charlie   35    london

四、数据读写

1. 读取数据(支持多种格式)

# 读取 csv
df = pd.read_csv('data.csv', encoding='utf-8')
# 读取 excel
df = pd.read_excel('data.xlsx', sheet_name='sheet1')
# 读取 json(与之前学习的 json 库结合)
df = pd.read_json('data.json')

2. 保存数据

# 保存为 csv
df.to_csv('output.csv', index=false)  # 不保存行索引

# 保存为 excel
df.to_excel('output.xlsx', sheet_name='results')

五、数据探索

1. 查看数据

查看数据
方法作用示例
df.head(n)查看前n行df.head(3)
df.tail(n)查看后n行df.tail(2)
df.info()显示数据概览df.info()
df.describe()统计数值列df.describe()

2. 选择数据

# 选择列
ages = df['age']          # 返回 series
name_city = df[['name', 'city']]  # 返回 dataframe
# 选择行
row_1 = df.iloc[0]        # 通过位置选择
row_bob = df.loc[df['name'] == 'bob']  # 通过条件选择
# 切片
subset = df[1:3]          # 第2-3行(左闭右开)

六、数据清洗

1. 处理缺失值

# 检测缺失值
print(df.isnull())
# 删除含缺失值的行
df_clean = df.dropna()
# 填充缺失值
df_filled = df.fillna({'age': df['age'].mean()})  # 用平均值填充年龄列

2. 去重

df_unique = df.drop_duplicates(subset=['name'])  # 根据姓名去重

3. 类型转换

df['age'] = df['age'].astype(float)  # 转换为浮点型

七、数据分析

1. 过滤数据

# 筛选年龄 > 25 的记录
adults = df[df['age'] > 25]
# 复合条件(注意用 & 代替 and)
young_in_paris = df[(df['age'] < 30) & (df['city'] == 'paris')]

2. 分组聚合

# 按城市分组,计算平均年龄
city_stats = df.groupby('city')['age'].mean()
print(city_stats)
city
london      35.0
new york    25.0
paris       30.0
name: age, dtype: float64

3. 排序

df_sorted = df.sort_values(by='age', ascending=false)  # 按年龄降序

八、数据合并

1. 横向合并(类似 sql join)

df1 = pd.dataframe({'id': [1, 2], 'name': ['a', 'b']})
df2 = pd.dataframe({'id': [2, 3], 'age': [25, 30]})
# 内连接
merged = pd.merge(df1, df2, on='id', how='inner')

2. 纵向合并(类似 sql union)

combined = pd.concat([df1, df2], axis=0)  # axis=0 表示行方向

九、时间序列处理

# 创建时间序列
date_rng = pd.date_range(start='2023-01-01', end='2023-01-05', freq='d')
ts = pd.series([10, 20, 15, 30, 25], index=date_rng)
# 重采样(按周计算平均值)
weekly_avg = ts.resample('w').mean()

十、可视化(需安装 matplotlib)

import matplotlib.pyplot as plt
# 绘制年龄分布直方图
df['age'].plot(kind='hist', bins=5)
plt.title('age distribution')
plt.show()

十一、常见错误处理

1.keyerror

# 检查列名是否存在
if 'salary' in df.columns:
    print(df['salary'])

2. 内存不足

  • 使用 df.info(memory_usage='deep') 查看内存占用

  • 用 df.select_dtypes(include='number') 选择数值列处理

十二、完整工作流示例

# 1. 读取数据
df = pd.read_csv('sales.csv')
# 2. 数据清洗
df = df.dropna(subset=['price'])
df['date'] = pd.to_datetime(df['date'])
# 3. 分析
monthly_sales = df.groupby(pd.grouper(key='date', freq='m'))['price'].sum()
# 4. 可视化
monthly_sales.plot(kind='bar')
plt.title('monthly sales')
plt.show()

十三、常用函数

1、数据读取与保存

函数作用示例
pd.read_csv()读取 csv 文件df = pd.read_csv('data.csv')
pd.read_excel()读取 excel 文件df = pd.read_excel('data.xlsx')
pd.read_json()读取 json 文件df = pd.read_json('data.json')
df.to_csv()保存为 csvdf.to_csv('output.csv', index=false)
df.to_excel()保存为 exceldf.to_excel('output.xlsx')

2、数据查看与筛选

函数/方法作用示例
df.head(n)查看前 n 行df.head(5)
df.tail(n)查看后 n 行df.tail(3)
df.info()显示数据信息(列名、类型、非空值)df.info()
df.describe()统计数值列的基本统计量df.describe()
df.shape获取 dataframe 的维度print(df.shape) → 输出 (行数, 列数)
df.columns获取所有列名df.columns.tolist()
df.loc[]标签索引选择数据df.loc[2, 'age'] → 选择第3行的age列
df.iloc[]位置索引选择数据df.iloc[0:3, 1:4] → 选择前3行,第2-4列
df.query()用表达式筛选数据df.query('age > 30 & city == "london"')

3、数据清洗

函数/方法作用示例
df.dropna()删除缺失值df.dropna(subset=['age'])
df.fillna()填充缺失值df.fillna({'age': df['age'].mean()})
df.drop_duplicates()删除重复行df.drop_duplicates(subset=['name'])
df.rename()重命名列df.rename(columns={'old':'new'})
df.astype()转换数据类型df['age'] = df['age'].astype(int)
df.replace()替换特定值df.replace({'male':'m', 'female':'f'})

4、数据分析

函数/方法作用示例
df.groupby()分组聚合df.groupby('city')['sales'].sum()
df.pivot_table()创建数据透视表pd.pivot_table(df, values='sales', index='region', columns='year')
df.sort_values()按值排序df.sort_values('age', ascending=false)
df.value_counts()统计唯一值频次df['city'].value_counts()
df.corr()计算列之间的相关系数df.corr()
df.merge()合并两个 dataframepd.merge(df1, df2, on='id')
pd.concat()拼接 dataframepd.concat([df1, df2], axis=0)

5、数据操作

函数/方法作用示例
df.apply()对列/行应用函数df['age'].apply(lambda x: x + 1)
df.map()对 series 元素映射转换df['gender'].map({'m':1, 'f':0})
df.assign()创建新列df.assign(income = df['salary']*12)
df.drop()删除列或行df.drop(columns=['temp'])
df.where()条件筛选(保留满足条件的值)df.where(df['age'] > 18)
df.melt()宽表转长表df.melt(id_vars=['name'])

到此这篇关于python数据分析pandas全攻略的文章就介绍到这了,更多相关python pandas安装导入内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com