Python pandas进行数据预处理的实现

 更新时间:2025年01月05日 10:46:19   作者:大数据张老师  
本案例通过使用pandas库对电子商务客户数据进行数据预处理,包括数据导入、查看、缺失值处理等处理,具有一定的参考价值,感兴趣的可以了解一下

案例:电子商务客户数据的预处理

本案例将通过使用pandas库对电子商务客户数据进行数据预处理。数据预处理是进行有效数据分析的重要步骤,目的是将数据处理为适合分析的状态。本案例分为几个步骤来逐步演示如何进行数据导入、查看数据集信息、处理缺失值、数据格式转换、重复值删除、数据标准化以及数据导出。

测试数据

以下是我们将要处理的测试数据,以电子商务客户订单为例:

CustomerIDOrderDateProductQuantityPrice
C0012024-01-10智能手机2500.00
C0022024-01-12笔记本电脑11200.00
C003NaN耳机350.00
C0012024-01-15平板电脑1300.00
C0042024-01-18笔记本电脑11200.00
C0052024-01-20智能手机2NaN
C0012024-01-15平板电脑1300.00
C0062024-01-22耳机2100.00
C0072024-01-25智能手表1200.00
C0082024-01-28平板电脑3900.00
C0092024-01-30笔记本电脑11500.00
C0102024-02-01智能手机42000.00
C0112024-02-05耳机5250.00
C0122024-02-08平板电脑1300.00
C0132024-02-10智能手表2400.00
C0142024-02-12笔记本电脑22400.00
C0152024-02-15智能手机11000.00
C0162024-02-18平板电脑2600.00
C0172024-02-20智能手表3600.00
C0182024-02-22耳机150.00
C0192024-02-25智能手机21200.00
C0202024-02-28笔记本电脑11300.00

步骤1:数据导入

首先,使用pandas导入CSV文件并加载数据。

import pandas as pd

# 导入CSV文件
df = pd.read_csv('ecommerce_customers.csv')

解析:首先导入pandas库,pd.read_csv()方法用于加载CSV文件,并将其存储在名为df的数据框中。

步骤2:查看数据集基本信息

使用pandas的各种方法来查看数据的结构和内容,以便对数据有初步的了解。

# 查看数据的前几行
print(df.head())

# 查看数据类型和列信息
print(df.info())

# 数值列的简单统计分析
print(df.describe())

解析

df.head():查看数据的前几行,帮助快速了解数据的基本结构。

运行结果

   CustomerID   OrderDate Product  Quantity   Price
0       C001  2024-01-10    智能手机         2   500.0
1       C002  2024-01-12   笔记本电脑         1  1200.0
2       C003         NaN      耳机         3    50.0
3       C001  2024-01-15    平板电脑         1   300.0
4       C004  2024-01-18   笔记本电脑         1  1200.0

通过head()方法,我们可以快速查看数据的前5行,了解数据的大致内容。

df.info():显示数据集的列、非空值数量和数据类型,帮助了解数据集的整体情况。

运行结果

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 5 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   CustomerID  20 non-null     object 
 1   OrderDate   19 non-null     object 
 2   Product     20 non-null     object 
 3   Quantity    20 non-null     int64  
 4   Price       19 non-null     float64
dtypes: float64(1), int64(1), object(3)
memory usage: 928.0+ bytes

通过info()方法,我们可以看到数据集中每一列的名称、数据类型,以及非空值的数量,这对于后续判断是否有缺失值非常有帮助。

df.describe():对数值列进行统计分析,提供如均值、标准差等信息。

运行结果

        Quantity        Price
count  20.000000    19.000000  
mean    2.000000   810.526316  
std     1.055597   714.053229
min     1.000000    50.000000
25%     1.000000   300.000000
50%     2.000000  1000.000000
75%     3.000000  1200.000000
max     5.000000  2400.000000

通过describe()方法,我们可以看到数值列(如QuantityPrice)的统计信息,如均值、中位数、标准差等,这对于数据的分布和特征分析非常重要。

`count` 表示数据集中非空值的数量。对于 `Quantity` 列,所有 20 个值都是非空的;而对于 `Price` 列,只有 19 个非空值,说明有一个缺失值。

`mean` 表示列的平均值。`Quantity` 列的平均购买量是 2;`Price` 列的平均价格是 810.53。步骤3:处理缺失值。

`min` 表示列中的最小值。`Quantity` 列的最小购买量是 1;`Price` 列的最低价格是 50。

`25%` 表示第一四分位数,即 25% 的数据点小于或等于这个值。对于 `Quantity` 列,第一四分位数是 1;对于 `Price` 列,这个值是 300。

`50%` 表示中位数,即 50% 的数据点小于或等于这个值。`Quantity` 列的中位数为 2;`Price` 列的中位数为 1000。

`75%` 表示第三四分位数,即 75% 的数据点小于或等于这个值。`Quantity` 列的第三四分位数是 3;`Price` 列的第三四分位数是 1200。

`max` 表示列中的最大值。`Quantity` 列的最大购买量是 5;`Price` 列的最高价格是 2400。

处理数据中的缺失值。在本案例中,OrderDatePrice列中存在缺失值。

# 查看缺失值
def missing_values(df):
    return df.isnull().sum()

print(missing_values(df))

# 填充缺失的价格列,以平均值替代
df['Price'].fillna(df['Price'].mean(), inplace=True)

# 填充缺失的订单日期,以特定日期替代
df['OrderDate'].fillna('2024-01-01', inplace=True)

解析

  • df.isnull().sum():统计每一列的缺失值数量,帮助识别数据中的空缺项。
  • df['Price'].fillna(df['Price'].mean(), inplace=True):使用均值填充Price列的缺失值,确保数据的完整性。inplace=True 是一个参数,用于指定操作是否在原数据框上进行修改。设置 inplace=True 后,操作会直接对原数据框进行更改,而不会返回一个新的数据框。这有助于节省内存,但需要谨慎使用,因为数据的修改是不可逆的。
  • df['OrderDate'].fillna('2024-01-01', inplace=True):将OrderDate列的缺失值填充为默认日期2024-01-01

步骤4:数据格式转换

OrderDate列从字符串转换为日期类型,以便后续进行时间序列分析。

# 将OrderDate转换为日期类型
df['OrderDate'] = pd.to_datetime(df['OrderDate'])

解析pd.to_datetime(df['OrderDate'])OrderDate列转换为日期时间格式,这样可以方便后续的日期相关分析,例如排序或时间序列分析。

步骤5:处理重复值

查找并删除数据集中的重复值,以保证数据的准确性。

# 查找重复的行
duplicates = df[df.duplicated()]
print(duplicates)

# 删除重复的行
df.drop_duplicates(inplace=True)

解析

  • df.duplicated():标记数据集中重复的行。
  • df.drop_duplicates(inplace=True):删除所有重复的行,确保数据集不包含重复记录,从而提高分析结果的准确性。

步骤6:数据标准化

Price列进行标准化,以便后续的分析和建模。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df['Price'] = scaler.fit_transform(df[['Price']])

解析

  • 导入MinMaxScaler用于对数据进行缩放。
  • scaler.fit_transform(df[['Price']])Price列的值缩放到0到1之间,标准化后的数据更适合用于机器学习模型。

步骤7:保存预处理后的数据

最后,将预处理后的数据保存为一个新的CSV文件,以供后续分析使用。

# 导出为新文件
df.to_csv('ecommerce_customers_cleaned.csv', index=False)

解析df.to_csv()方法将处理过的数据保存为新的CSV文件,index=False表示不保存索引列。

总结

通过上述步骤,我们已经对电子商务客户数据集进行了数据预处理,涵盖了数据的导入、查看、缺失值处理、数据格式转换、重复值删除、数据标准化以及数据导出。通过这个案例,学生可以理解数据预处理的关键步骤和技巧,为后续的数据分析和建模做好准备。

到此这篇关于Python pandas进行数据预处理的实现的文章就介绍到这了,更多相关pandas数据预处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)

    Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)

    这篇文章主要介绍了Pycharm2020.1安装中文语言插件的详细教程,不需要汉化,本文给大家分享三种方法,在这小编推荐使用方法二,具体内容详情大家跟随小编一起看看吧
    2020-08-08
  • Python使用progressbar模块实现的显示进度条功能

    Python使用progressbar模块实现的显示进度条功能

    这篇文章主要介绍了Python使用progressbar模块实现的显示进度条功能,简单介绍了progressbar模块的安装,并结合实例形式分析了Python使用progressbar模块显示进度条的相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • python 遗传算法求函数极值的实现代码

    python 遗传算法求函数极值的实现代码

    今天小编就为大家分享一篇python 遗传算法求函数极值的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python表格数据处理库之tablib库详解

    Python表格数据处理库之tablib库详解

    这篇文章主要介绍了Python表格数据处理库之tablib库详解,Tablib是一个用于处理电子表格数据的Python库,它可以轻松地进行数据的导入和导出,以及数据格式的转换,需要的朋友可以参考下
    2023-08-08
  • Python计算多幅图像栅格值的平均值

    Python计算多幅图像栅格值的平均值

    这篇文章主要为大家详细介绍了Python计算多幅图像栅格值的平均值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python如何查找图片按钮的坐标位置

    python如何查找图片按钮的坐标位置

    这篇文章主要介绍了python如何查找图片按钮的坐标位置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Django之模板层的实现代码

    Django之模板层的实现代码

    这篇文章主要介绍了Django之模板层的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python基于百度API识别并提取图片中文字

    Python基于百度API识别并提取图片中文字

    本文主要实现了利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 配置jupyter notebook全步骤,更改默认路径,jupyter不是问题

    配置jupyter notebook全步骤,更改默认路径,jupyter不是问题

    这篇文章主要介绍了配置jupyter notebook全步骤,更改默认路径,jupyter不是问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Python基于pygame实现的弹力球效果(附源码)

    Python基于pygame实现的弹力球效果(附源码)

    这篇文章主要介绍了Python基于pygame实现的弹力球效果,涉及pygame图形动态操作的相关的技巧,并附带了完整的源码供读者下载参考,需要的朋友可以参考下
    2015-11-11

最新评论