深入理解Pandas数据处理:从基础到实践

深入理解Pandas数据处理:从基础到实践

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

Pandas是Python数据分析的核心库之一,提供了高效便捷的数据结构和数据分析工具。本文基于数据科学项目中的Pandas教程,系统性地介绍Pandas的核心功能和使用技巧。

一、Pandas基础数据结构

1.1 Series:一维带标签数组

Series是Pandas中最基本的数据结构,可以理解为带标签的一维数组。每个Series包含两个主要部分:

  • 数据值(values):可以是任何NumPy支持的数据类型
  • 索引(index):与数据值对应的标签
import pandas as pd
ser = pd.Series([1, 1, 2, -3, -5, 8, 13])
Series核心操作
  1. 创建Series

    • 从列表创建:pd.Series([1, 2, 3])
    • 从字典创建:pd.Series({'a':1, 'b':2})
    • 指定索引:pd.Series([1,2,3], index=['x','y','z'])
  2. 访问数据

    • 获取值数组:ser.values
    • 获取索引:ser.index
    • 按位置访问:ser[0]
    • 按标签访问:ser['a']
  3. 布尔索引

    ser[ser > 0]  # 获取所有大于0的值
    
  4. 向量化运算

    ser * 2  # 每个元素乘以2
    np.exp(ser)  # 对每个元素应用指数函数
    

1.2 DataFrame:二维表格型数据结构

DataFrame是Pandas中最常用的数据结构,可以看作是由多个Series组成的表格,每个Series是一列。

data = {'state': ['VA', 'VA', 'MD'], 
        'year': [2012, 2013, 2014],
        'pop': [5.0, 5.1, 4.0]}
df = pd.DataFrame(data)
DataFrame核心操作
  1. 创建DataFrame

    • 从字典创建:pd.DataFrame({'col1':[1,2], 'col2':[3,4]})
    • 指定列顺序:pd.DataFrame(data, columns=['year','state','pop'])
    • 添加空列:pd.DataFrame(data, columns=['year','state','pop','new_col'])
  2. 访问数据

    • 获取列:df['state'] 返回Series
    • 获取多列:df[['state','pop']] 返回DataFrame
    • 获取行:df.loc[0]df.iloc[0]
  3. 添加/删除列

    df['new_col'] = range(len(df))  # 添加列
    del df['new_col']  # 删除列
    

二、数据索引与选择

Pandas提供了灵活的数据索引和选择方式,是数据处理的核心技能。

2.1 基本索引方法

  1. 列选择

    df['state']  # 选择单列
    df[['state','pop']]  # 选择多列
    
  2. 行选择

    • 位置索引:df.iloc[0] 选择第一行
    • 标签索引:df.loc[0] 选择索引为0的行
    • 切片:df[0:2] 选择前两行
  3. 布尔索引

    df[df['pop'] > 5]  # 人口大于5的记录
    df[(df['state'] == 'VA') & (df['year'] > 2012)]  # 复合条件
    

2.2 高级索引技巧

  1. 使用isin过滤

    df[df['state'].isin(['VA','MD'])]
    
  2. 使用query方法

    df.query('pop > 5 and year < 2014')
    
  3. 使用where方法

    df.where(df['pop'] > 5)  # 不满足条件的显示为NaN
    

三、数据清洗与转换

数据清洗是数据分析的重要环节,Pandas提供了丰富的功能。

3.1 处理缺失值

  1. 检测缺失值

    df.isnull()  # 检测所有缺失值
    df['col'].isnull()  # 检测特定列
    
  2. 处理缺失值

    df.dropna()  # 删除包含缺失值的行
    df.fillna(0)  # 用0填充缺失值
    df.fillna(df.mean())  # 用均值填充
    

3.2 数据转换

  1. 应用函数

    df['pop'].apply(lambda x: x*1000)  # 对列应用函数
    
  2. 替换值

    df['state'].replace('VA', 'Virginia')  # 替换特定值
    
  3. 离散化

    pd.cut(df['pop'], bins=[0,5,10])  # 将连续值分箱
    

四、数据聚合与分组

分组聚合是数据分析的强大工具。

4.1 基本分组操作

grouped = df.groupby('state')  # 按state分组
grouped['pop'].mean()  # 计算每组的平均人口

4.2 多级分组

df.groupby(['state','year']).mean()  # 多级分组

4.3 聚合函数

df.groupby('state').agg({'pop':['mean','max'], 'year':'count'})

五、时间序列处理

Pandas提供了强大的时间序列处理能力。

dates = pd.date_range('20230101', periods=6)
ts = pd.Series(range(6), index=dates)

5.1 时间索引操作

ts['2023-01']  # 获取某月数据
ts.truncate(before='2023-01-03')  # 截断数据

5.2 重采样

ts.resample('M').mean()  # 按月重采样

六、性能优化技巧

  1. 使用向量化操作:避免循环,使用内置方法
  2. 使用分类数据类型:对低基数字符串列使用category类型
  3. 使用eval和query:对大型DataFrame更高效
  4. 使用合适的数据类型:如用int8代替int64节省内存

结语

Pandas是Python数据分析的多功能工具,掌握其核心功能可以大幅提升数据处理效率。本文从基础数据结构到高级操作技巧,系统介绍了Pandas的主要功能。实际应用中,建议结合具体业务场景灵活运用这些方法,并持续探索Pandas更强大的功能。

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁通彭Mercy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值