Pandas数据处理与分析教程:从基础到实战

简介: Pandas数据处理与分析教程:从基础到实战

前言


在数据分析和数据科学领域,Pandas是Python编程语言中最受欢迎的数据处理库之一。它提供了高效、灵活和易于使用的数据结构,使得数据的清洗、转换和分析变得简单而直观。本教程将详细介绍Pandas的各个方面,包括基本的数据结构、数据操作、数据过滤和排序、数据聚合与分组,以及常见的数据分析任务。


什么是Pandas?


Pandas是一个开源的Python库,提供了高性能、易用和灵活的数据结构,用于数据处理和分析。它建立在NumPy之上,使得处理结构化数据更加简单和高效。Pandas的两个主要数据结构是Series和DataFrame,可以理解为NumPy数组的增强版。它们提供了更多的功能和灵活性,使得数据处理变得更加直观和方便。


Pandas的安装和导入


要使用Pandas,首先需要将其安装在你的Python环境中。可以通过使用pip命令来进行安装:

pip install pandas

安装完成后,我们可以通过以下方式将Pandas导入到Python代码中:

import pandas as pd


数据结构


Pandas提供了两种基本的数据结构:Series和DataFrame。


Series(案例1:创建Series)


Series是一种一维的带标签的数组,可以存储任意类型的数据。它类似于带有标签的NumPy数组,但提供了更多的功能和灵活性。

import pandas as pd
data = [1, 2, 3, 4, 5]
s = pd.Series(data)
print(s)

输出结果:

0    1
1    2
2    3
3    4
4    5
dtype: int64


DataFrame(案例2:创建DataFrame)


DataFrame是一种二维的表格型数据结构,可以存储多种类型的数据。它类似于Excel中的电子表格或SQL中的数据库表,提供了行、列的索引,方便对数据进行增删改查。

import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Country': ['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
print(df)

输出结果:

Name  Age Country
0   Alice   25     USA
1     Bob   30  Canada
2  Charlie   35      UK

数据读取和写入


Pandas可以从各种数据源中读取数据,包括CSV文件、Excel文件、数据库等。同时,也可以将数据写入到这些数据源中。



从CSV文件中读取数据(案例3:读取CSV文件)


import pandas as pd
df = pd.read_csv('data.csv')
print(df)

输出结果:

Name  Age Country
0  John   25     USA
1  Mary   30  Canada
2  Mark   35      UK


从Excel文件中读取数据(案例4:读取Excel文件)


import pandas as pd
df = pd.read_excel('data.xlsx')
print(df)

输出结果:

Name  Age Country
0  John   25     USA
1  Mary   30  Canada
2  Mark   35      UK

将数据写入CSV和Excel文件(案例5:写入CSV和Excel文件)


import pandas as pd
df = pd.DataFrame({'Name': ['John', 'Mary', 'Mark'],
                   'Age': [25, 30, 35],
                   'Country': ['USA', 'Canada', 'UK']})
df.to_csv('data.csv', index=False)
df.to_excel('data.xlsx', index=False)

这样就将DataFrame中的数据写入到了CSV和Excel文件中。


数据操作


在数据操作方面,Pandas提供了丰富的功能,包括数据选择和索引、数据切片和过滤、数据缺失值处理、数据排序和排名等。



数据选择和索引(案例6:选择和索引数据)


import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Country': ['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
# 选择单列
print(df['Name'])
# 选择多列
print(df[['Name', 'Age']])
# 选择行
print(df.loc[0])
# 选择多行
print(df.loc[[0, 2]])
# 利用条件选择
print(df[df['Age'] > 30]


数据切片和过滤(案例7:切片和过滤数据)


import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Country': ['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
# 切片操作
print(df.iloc[1:3, :])
# 过滤操作
print(df[df['Age'] > 30])


数据缺失值处理(案例8:处理缺失值)


import pandas as pd
import numpy as np
data = {'Name': ['Alice', np.nan, 'Charlie'],
        'Age': [25, np.nan, 35],
        'Country': ['USA', 'Canada', np.nan]}
df = pd.DataFrame(data)
# 检查缺失值
print(df.isnull())
# 填充缺失值
df_filled = df.fillna(0)
print(df_filled)

数据排序和排名(案例9:排序和排名数据)


import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Country': ['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
# 按某一列排序
df_sorted = df.sort_values('Age')
print(df_sorted)
# 排名
df['Rank'] = df['Age'].rank()
print(df)


数据聚合与分组


在数据聚合与分组方面,Pandas提供了灵活的功能,可以对数据进行分组、聚合和统计等操作。

分组和聚合(案例10:分组和聚合数据)


import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Country': ['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
# 按照某一列进行分组
grouped = df.groupby('Country')
# 对分组后的数据进行聚合操作
agg_result = grouped['Age'].mean()
print(agg_result)

数据可视化


Pandas结合Matplotlib库,提供了方便的数据可视化功能,可以直接在Pandas中进行数据图表绘制。



绘制线形图(案例11:绘制线形图)


import pandas as pd
import matplotlib.pyplot as plt
data = {'Year': [2010, 2011, 2012, 2013, 2014],
        'Sales': [100, 200, 150, 300, 250]}
df = pd.DataFrame(data)
# 绘制线形图
df.plot(x='Year', y='Sales', kind='line')
plt.show()

绘制柱状图(案例12:绘制柱状图)


import pandas as pd
import matplotlib.pyplot as plt
data = {'Year': [2010, 2011, 2012, 2013, 2014],
        'Sales': [100, 200, 150, 300, 250]}
df = pd.DataFrame(data)
# 绘制柱状图
df.plot(x='Year', y='Sales', kind='bar')
plt.show()

高级应用


除了基本的数据操作和可视化外,Pandas还提供了一些高级应用功能,包括时间序列分析、合并与连接数据等。


时间序列分析(案例13:时间序列分析)


import pandas as pd
# 创建一个时间序列
dates = pd.date_range('2023-01-01', '2023-01-10')
data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=dates)
# 按月份统计
monthly_data = data.resample('M').sum()
print(monthly_data)


合并与连接数据(案例14:合并与连接数据)


import pandas as pd
data1 = {'Name': ['Alice', 'Bob'],
         'Age': [25, 30]}
df1 = pd.DataFrame(data1)
data2 = {'Name': ['Charlie', 'Dave'],
         'Age': [35, 40]}
df2 = pd.DataFrame(data2)
# 合并两个DataFrame
df_merged = pd.concat([df1, df2])
print(df_merged)

数据透视表


数据透视表是一种用于对数据进行汇总和聚合的功能。在Pandas中,可以使用pivot_table函数来创建数据透视表,通过指定行、列和聚合函数来对数据进行分组和聚合。


创建数据透视表


首先,我们创建一个包含姓名、年份、销售额和利润的DataFrame:


import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
        'Year': [2010, 2011, 2012, 2010, 2011, 2012],
        'Sales': [100, 200, 150, 300, 250, 200],
        'Profit': [10, 20, 15, 30, 25, 20]}
df = pd.DataFrame(data)

现在,我们可以使用pivot_table函数创建数据透视表。在这个例子中,我们想要根据姓名和年份对销售额和利润进行汇总:

pivot_table = pd.pivot_table(df, values=['Sales', 'Profit'], index='Name', columns='Year', aggfunc='sum')
print(pivot_table)

输出结果:

Profit          Sales         
Year      2010 2011 2012  2010 2011 2012
Name                                   
Alice       10  NaN  NaN   300  NaN  NaN
Bob        NaN   20  NaN   NaN  250  NaN
Charlie    NaN  NaN   35   NaN  NaN  350

数据透视表中的每个单元格表示对应姓名和年份的销售额和利润的总和。


文件读写


Pandas提供了各种方法来读取和写入不同格式的文件,如CSV、Excel和SQL等。


读取和写入CSV文件


要读取CSV文件,可以使用read_csv函数,并提供文件路径作为参数。以下是一个示例:

import pandas as pd
# 读取CSV文件
df = pd.read_csv('data.csv', encoding='utf-8')

要将DataFrame写入CSV文件,可以使用to_csv方法,并指定要保存的文件名。以下是一个示例:

import pandas as pd
# 写入CSV文件
df.to_csv('output.csv', index=False, encoding='utf-8')

在这个例子中,我们通过指定encoding='utf-8'来确保读取和写入时可以正确处理中文字符。


读取和写入Excel文件


Pandas还可以读取和写入Excel文件。要读取Excel文件,可以使用read_excel函数并指定文件路径。以下是一个示例:

import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx')

要将DataFrame写入Excel文件,可以使用to_excel方法,并指定要保存的文件名。以下是一个示例:

import pandas as pd
# 写入Excel文件
df.to_excel('output.xlsx', index=False)


实战案例之分析销售数据


代码解析


import pandas as pd
# 读取销售数据文件
df = pd.read_csv('sales_data.csv')
# 查看前几行数据
print(df.head())

导入pandas库并简写为pd。然后使用read_csv函数读取名为sales_data.csv的销售数据文件,并将数据存储在DataFrame对象df中。接着,使用head方法打印出df的前几行数据。

# 查看数据的基本信息
print(df.info())

使用info方法打印出数据的基本信息,包括列名称、数据类型以及非空值的数量等。

# 统计销售额和利润的描述性统计信息
print(df[['Sales', 'Profit']].describe())

使用describe方法进行数据的描述性统计分析,输出销售额和利润的统计指标,如总数、均值、标准差、最小值、25%分位数、50%分位数(中位数)和75%分位数。

# 按照产品类别计算总销售额和利润
category_sales_profit = df.groupby('Category')[['Sales', 'Profit']].sum()
print(category_sales_profit)

使用groupby方法按照产品类别对数据进行分组,然后使用sum方法计算每个产品类别的总销售额和利润,并将结果存储在category_sales_profit中。

# 统计每个月的销售额和利润
df['OrderDate'] = pd.to_datetime(df['OrderDate'])  # 将日期字符串转换为日期对象
df['Month'] = df['OrderDate'].dt.month  # 提取出月份信息
monthly_sales_profit = df.groupby('Month')[['Sales', 'Profit']].sum()
print(monthly_sales_profit)

使用pd.to_datetime函数将日期字符串转换为日期对象,并将其赋值给新列OrderDate。然后,使用dt.month提取出日期对象的月份信息,将其赋值给新列Month。最后,使用groupby方法按照月份对数据进行分组,然后使用sum方法计算每个月的总销售额和利润,并将结果存储在monthly_sales_profit中。


完整代码


import pandas as pd
# 读取销售数据文件
df = pd.read_csv('sales_data.csv')
# 查看前几行数据
print(df.head())
# 查看数据的基本信息
print(df.info())
# 统计销售额和利润的描述性统计信息
print(df[['Sales', 'Profit']].describe())
# 按照产品类别计算总销售额和利润
category_sales_profit = df.groupby('Category')[['Sales', 'Profit']].sum()
print(category_sales_profit)
# 统计每个月的销售额和利润
df['OrderDate'] = pd.to_datetime(df['OrderDate'])  # 将日期字符串转换为日期对象
df['Month'] = df['OrderDate'].dt.month  # 提取出月份信息
monthly_sales_profit = df.groupby('Month')[['Sales', 'Profit']].sum()
print(monthly_sales_profit)

CSV数据:

OrderDate Category Sales Profit
2021-01-01 Electronics 100 10
2021-01-02 Fashion 200 20
2021-01-03 Electronics 150 15
2021-02-01 Fashion 300 30
2021-02-02 Clothing 250 25
相关文章
|
9天前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
82 0
|
9天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
167 0
|
2月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
169 0
|
4月前
|
运维 数据挖掘 数据处理
Pandas时间数据处理:从基础到进阶的实战指南
Pandas时间数据处理涵盖了从基础到高级的全面功能。其核心由Timestamp、DatetimeIndex、Period和Timedelta四个类构建,支持精准的时间点与区间操作。内容包括时间数据生成(字符串解析与序列生成)、时间索引与切片、高级运算(偏移重采样与窗口计算)、时区处理、周期性数据分析及实战案例(如智能电表数据)。此外,还涉及性能优化技巧和未来展望,帮助用户高效处理时间序列数据并应用于预测分析等场景。
169 1
|
4月前
|
传感器 安全 数据处理
Pandas时间数据处理:从基础到进阶的实战指南
本文深入讲解Pandas时间数据处理技巧,从时间对象转换到高性能计算全面覆盖。通过真实案例拆解,掌握Timestamp与Period的核心概念、时间序列生成、重采样方法及窗口函数应用。同时剖析时区处理、性能优化策略及常见陷阱解决方案,并展望Pandas 2.0的时间处理新特性。内容强调“时间索引优先”原则,助你高效分析股票K线、用户行为等时间序列数据。
123 0
|
8月前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
144 12
|
8月前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
213 8
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
282 1
|
11月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
324 0
|
11月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
229 2

热门文章

最新文章

下一篇
oss教程