当前位置:   article > 正文

python进阶教程---结构化数据分析工具Pandas_python 数据结构化神器

python 数据结构化神器

2.1 Pandas 概览

Pandas 是一个开源项目,由 Wes McKinney 在 2008 年发起,用于解决数据分析工作中的实际需求。它建立在 NumPy 库之上,为 Python 提供了丰富的数据结构和数据分析工具。Pandas 的名字来源于“Panel Data”和“Python Data Analysis”的缩写,其设计目的是为金融和时间序列分析提供支持,但它的应用范围远不止这些。
Pandas 的主要特点包括:

  • 强大的数据结构:提供 DataFrame 和 Series 两种数据结构,可以处理不同类型的数据,包括数字、字符串、日期等。
  • 数据导入导出:支持多种数据格式,如 CSV、Excel、SQL 数据库和 HDF5。
  • 数据清洗和准备:提供了数据缺失值处理、重复数据删除、数据类型转换等功能。
  • 数据操作:支持数据的索引、切片、筛选、排序和分组等操作。
  • 数据分析:提供描述性统计、相关性分析、假设检验等分析方法。
  • 时间序列分析:提供日期范围生成、时间周期转换、时间序列重采样等功能。
    Pandas 适用于各种数据分析任务,从简单的数据探索到复杂的数据处理,都被广泛应用于学术研究、金融分析、商业智能、机器学习等领域。由于其易用性和强大的功能,Pandas 已经成为 Python 数据分析的一个不可或缺的部分。
    在使用 Pandas 之前,需要先安装 Pandas 库。通常使用 pip 命令进行安装:
pip install pandas
  • 1

或者使用 conda 命令(如果你使用 Anaconda 或 Miniconda):

conda install pandas
  • 1

安装完成后,可以通过以下方式导入 Pandas 库:

import pandas as pd
  • 1

这里使用了 pd 作为 Pandas 的缩写,这是一种常见的约定。接下来,就可以使用 Pandas 提供的各种功能进行数据分析工作了。


2.2 数据结构

Pandas 主要有两种数据结构:Series 和 DataFrame。

  1. Series
    Series 是 Pandas 中的基本数据结构类型,它是一个类似于一维数组的对象,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。Series 包含数据和索引两大部分,索引在左,数据在右。
    创建一个 Series 对象的基本语法如下:
import pandas as pd
# 创建一个 Series 对象
s = pd.Series(data, index=index)
  • 1
  • 2
  • 3

其中,data 可以是列表、数组、字典等,index 是一个可选的索引标签列表,用于标识每个数据点。
例如:

s = pd.Series([1, 2, 3, 4, 5])
  • 1

这将创建一个默认索引为 0 到 4 的 Series 对象。
2. DataFrame
DataFrame 是一个二维的表格型数据结构,它包含有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame 有行索引和列索引,可以被看作是一个 Series 的容器。
创建一个 DataFrame 对象的基本语法如下:

import pandas as pd
# 创建一个 DataFrame 对象
df = pd.DataFrame(data, index=index, columns=columns)
  • 1
  • 2
  • 3

其中,data 可以是字典、列表、数组、另一个 DataFrame 等,index 是行索引,columns 是列索引。
例如:

data = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data)
  • 1
  • 2

这将创建一个两列的 DataFrame 对象,行索引默认为 0 到 1。
DataFrame 的列可以是不同的数据类型,并且可以进行各种操作,如选择、删除、添加列等。
这两种数据结构是 Pandas 库的核心,几乎所有的操作都是围绕这两种数据结构展开的。理解和掌握这两种数据结构是使用 Pandas 进行数据分析的基础。


2.3 基本操作

Pandas 提供了一系列基本操作,这些操作对于数据处理和分析至关重要。以下是一些常用的基本操作:

  1. 创建数据结构
    • 使用 pd.Series() 创建 Series。
    • 使用 pd.DataFrame() 创建 DataFrame。
  2. 数据查看
    • df.head(n):查看 DataFrame 的前 n 行。
    • df.tail(n):查看 DataFrame 的后 n 行。
    • df.info():查看 DataFrame 的基本信息。
    • df.describe():查看 DataFrame 的统计摘要。
  3. 数据选择
    • 使用行标签或列名选择单行或多行:df.loc[行标签]df.loc[行标签, 列名]
    • 使用整数索引选择单行或多行:df.iloc[整数索引]df.iloc[整数索引, 整数列索引]
    • 使用布尔索引选择满足条件的行:df[条件表达式]
  4. 数据筛选
    • 使用逻辑运算符进行条件筛选:df[df['列名'] > 值]
  5. 数据排序
    • 使用 df.sort_values(by='列名') 按照某一列的值进行排序。
  6. 数据添加和删除
    • 添加列:df['新列名'] = 值或列表
    • 删除列:df.drop('列名', axis=1)
    • 添加行:df.loc[新行标签] = 值
    • 删除行:df.drop('行标签')
  7. 数据分组和聚合
    • 使用 df.groupby('列名') 对数据进行分组。
    • 使用 groupby 对象的 agg() 方法进行聚合操作。
  8. 数据合并
    • 使用 pd.concat() 沿着轴进行数据的合并。
    • 使用 pd.merge() 进行数据库风格的合并操作。
  9. 数据处理
    • 缺失值处理:df.isnull()df.dropna()df.fillna()
    • 重复值处理:df.duplicated()df.drop_duplicates()
  10. 数据转换
    • 使用 df.apply() 对数据进行逐元素操作。
    • 使用 df.applymap() 对 DataFrame 中的每个元素应用一个函数。
    • 使用 df.pipe() 将多个操作串联起来。
      这些基本操作是 Pandas 进行数据分析的核心功能。通过这些操作,可以轻松地处理和转换数据,为更深入的分析打下基础。在实际应用中,这些操作通常会被组合使用,以完成复杂的数据处理任务。

2.4 高级应用

Pandas 的高级应用涉及更复杂的操作,这些操作对于处理大数据集和执行高级数据分析任务非常有用。以下是一些 Pandas 的高级应用:

  1. 分组聚合(GroupBy)
    • groupby 操作允许你将数据分组,然后对每个组应用聚合函数(如 summeanmax 等)或自定义函数。
    • df.groupby('列名').agg({'列名': ['sum', 'mean']}) 可以对分组数据应用多个聚合函数。
  2. 窗口函数(Window Functions)
    • 窗口函数可以对数据进行滚动或扩展计算,例如计算移动平均、窗口和等。
    • df['列名'].rolling(window=3).mean() 可以计算移动平均。
  3. 多重索引(MultiIndex)
    • 多重索引允许你在 DataFrame 中创建层次化的索引,这对于处理高维数据非常有用。
    • df.set_index(['列名1', '列名2']) 可以将列转换为多重索引。
  4. 性能优化
    • 使用 df.astype() 将数据类型转换为更高效的类型。
    • 使用 df.eval()df.query() 来优化表达式求值和查询操作。
    • 使用 df.pivot_table() 创建透视表,这是一种汇总大型数据集的有效方法。
  5. 文本数据处理
    • 使用 df.str 访问器对 Series 中的字符串进行操作,如查找、替换、分割等。
  6. 日期和时间序列
    • Pandas 提供了强大的日期和时间序列处理功能,包括时间范围生成、频率转换、重采样等。
    • pd.to_datetime() 可以将字符串转换为日期时间对象。
    • df.resample('D').mean() 可以对时间序列数据进行重采样。
  7. 缺失数据处理
    • 使用 df.isna()df.notna() 检测缺失值。
    • 使用 df.fillna()df.dropna()df.interpolate() 处理缺失值。
  8. 数据透视表(Pivot Tables)
    • pd.pivot_table() 可以创建数据透视表,这是一种多维度数据汇总和分析的工具。
  9. 高级字符串操作
    • 使用 df.applymap()df.apply() 结合 lambda 函数进行复杂的字符串操作。
  10. 链式赋值(Chained Assignment)
    • 使用链式赋值时需要小心,因为它可能会导致不可预见的行为。可以通过设置 pd.options.mode.chained_assignment 来控制链式赋值的警告。
  11. categorical 数据类型
    • 使用 pd.Categorical() 创建分类数据类型,这有助于节省内存和提高性能。
  12. 高级接口(Excel, SQL, HDF5)
    • Pandas 提供了与 Excel、SQL 数据库和 HDF5 格式的高级集成,可以轻松读写这些格式的数据。
      这些高级应用展示了 Pandas 的强大功能和灵活性。在实际的数据分析项目中,这些高级功能可以帮助你更高效地处理和分析数据。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/937767
推荐阅读
相关标签
  

闽ICP备14008679号