机器学习库:pandas

简介: 机器学习库:pandas

 




写在开头

在机器学习中,我们除了关注模型的性能外,数据处理更是必不可少,本文将介绍一个重要的数据处理库pandas,将随着我的学习过程不断增加内容

基本数据格式

pandas提供了两种数据类型:Series和DataFrame,在机器学习中主要使用DataFrame,我们也重点介绍这个

DataFrame

dataframe是一个二维的数据结构,常用来处理表格数据

使用代码

import pandas as pd
 
 
a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
print(p)

dataframe是一个二维表格,包含行与列的信息

数据选取

iloc

我觉得pandas里面选取数据的一个很通用的方法是iloc

pd.iloc[行序号, 列序号]

iloc的参数用逗号隔开,前面是行序号,后面是列序号

import pandas as pd
 
 
a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
print(p)
print("iloc示例:")
print(p.iloc[0, 0])
print(p.iloc[2, 0])

iloc也支持切片操作

import pandas as pd
 
 
a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
print(p)
print("iloc切片:")
print(p.iloc[0:4, 0])

这会打印第一列的0到3行

数据描述

head可以查看指定前几行的值,这方便在处理一些大数据集时,我们可以只加载几列来了解数据集而不必加载整个数据集

import pandas as pd
 
 
a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
 
print(p.head(2))

我们这里指定显示前2行,不指定默认值是前5行

describe

describe方法可以描述表格所有列的数字特征,中位数,平均值等

import pandas as pd
 
 
a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
 
print(p.describe())

不会处理字符串值哦

数值统计函数value_counts

当我们有一个年龄列表,我们想知道不同年龄的数量分别有多少,这时就可以使用value_counts函数了,它可以统计某一列的值的数量

import pandas as pd
 
 
df = pd.DataFrame({'name': ['a', 'b', 'c', 'd', 'e'],
                    'age': [17, 15, 15, 15, 17]})
 
 
print(df["age"].value_counts())

数据合并

设想一下,我们有一个员工姓名和工号的表格,我们还有一个员工姓名和性别的表格,我们想把这两个表通过员工姓名合在一起,怎么实现呢

表合并函数merge

merge函数可以指定以某一列来合并表格

import pandas as pd
 
 
# 创建两个示例 DataFrame
df1 = pd.DataFrame({'name': ['A', 'B', 'C', 'D'],
                    'number': [12335, 23212, 33432, 44678]})
 
df2 = pd.DataFrame({'name': ['A', 'B', 'C', 'D'],
                    'sex': ['F', 'F', 'M', 'F']})
 
# 使用 merge 合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='name')
print(merged_df)

on='name'指定函数以name这一列来合并表格

分组函数groupby

想象一个场景,一个表中每行记录了某个员工某日的工作时长,如下

import pandas as pd
 
 
df = pd.DataFrame({'str': ['a', 'a', 'b', 'b', 'a'],
                    '每日工作时长': [1, 2, 3, 4, 5]})
 
print(df)

当我们想要统计员工a的总时长该怎么办呢,我们要把a和b先分组,这就是groupby函数的作用

groupby函数的参数是决定根据哪一列来进行分组的

import pandas as pd
 
 
df = pd.DataFrame({'str': ['a', 'a', 'b', 'b', 'a'],
                    '每日工作时长': [1, 2, 3, 4, 5]})
 
 
print(df.groupby("str"))
print(list(df.groupby("str")))

如上图所示,groupby函数返回的是一个分组对象,我们使用list函数把它转化成列表然后打印出来,可以看到成功分组了,我们接下来会讲解如何使用聚合函数求和

聚合函数agg

在上面的例子中我们已经分好了组,接下来我们使用agg函数来进行求和,agg函数接收的参数是一个函数,然后对调用方法的对象执行这个函数

import pandas as pd
 
 
df = pd.DataFrame({'str': ['a', 'a', 'b', 'b', 'a'],
                    '工作时长': [1, 2, 3, 4, 5]})
 
 
print(df.groupby("str").agg(sum))

我们这里给agg函数传入了求和函数,可以看到求出了两个员工的总工作时长

数据删除

在机器学习竞赛时,有时我们想删除一些无用特征,怎么实现删除无用特征的列呢?

drop

以上一节的员工表格为例,增添以下代码

merged_df = merged_df.drop(columns="number")
print(merged_df)

可以看到number列被删除了

drop删除多列

要想删除多列,仅需要将列的名字放在一个列表里

merged_df = merged_df.drop(columns=["number", "sex"])
print(merged_df)

注意:在使用drop时,如果只写df.drop()是没有用的,你必须像上面两个例子一样,将drop后的df表格赋值给原来的表格。

处理缺失值

查找缺失值

isnull可以查找是否有缺失值,配合sum函数可以统计每一列缺失值的数量

import pandas as pd
 
 
a = {"a": [1, 3, np.NAN, 3], "b": [3, 4, 2, 1]}
 
p = pd.DataFrame(a, index=None)
 
print(p.isnull().sum())

填充缺失值

因为有些机器学习模型无法处理缺失值,我们必须将缺失值补充好,可以用0填充,也可以用平均值填充,代码如下

# 0填充
print(p.fillna(0))
# 平均值填充
print(p.fillna(p["a"].mean()))

相关文章
|
7月前
|
数据采集 机器学习/深度学习 Python
【机器学习】数据清洗——基于Pandas库的方法删除重复点
【机器学习】数据清洗——基于Pandas库的方法删除重复点
279 1
|
机器学习/深度学习 数据处理 Python
【机器学习5】数据处理(二)Pandas:表格处理 2
【机器学习5】数据处理(二)Pandas:表格处理
278 0
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
5月前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
89 1
|
2月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
98 3
|
5月前
|
机器学习/深度学习 数据采集 大数据
驾驭大数据洪流:Pandas与NumPy在高效数据处理与机器学习中的核心作用
【7月更文挑战第13天】在大数据时代,Pandas与NumPy是Python数据分析的核心,用于处理复杂数据集。在一个电商销售数据案例中,首先使用Pandas的`read_csv`加载CSV数据,通过`head`和`describe`进行初步探索。接着,数据清洗涉及填充缺失值和删除异常数据。然后,利用`groupby`和`aggregate`分析销售趋势,并用Matplotlib可视化结果。在机器学习预处理阶段,借助NumPy进行数组操作,如特征缩放。Pandas的数据操作便捷性与NumPy的数值计算效率,共同助力高效的数据分析和建模。
105 3
|
5月前
|
机器学习/深度学习 数据采集 数据处理
重构数据处理流程:Pandas与NumPy高级特性在机器学习前的优化
【7月更文挑战第14天】在数据科学中,Pandas和NumPy是数据处理的关键,用于清洗、转换和计算。用`pip install pandas numpy`安装后,Pandas的`read_csv`读取数据,`fillna`处理缺失值,`drop`删除列。Pandas的`apply`、`groupby`和`merge`执行复杂转换。NumPy加速数值计算,如`square`进行向量化操作,`dot`做矩阵乘法。结合两者优化数据预处理,提升模型训练效率和效果。
74 1
|
6月前
|
机器学习/深度学习 数据挖掘 Python
机器学习之pandas基础——pandas与概率论的简短碰面
机器学习之pandas基础——pandas与概率论的简短碰面
53 4
|
7月前
|
机器学习/深度学习 数据采集 SQL
【Python机器学习专栏】使用Pandas处理机器学习数据集
【4月更文挑战第30天】本文介绍了如何使用Python的Pandas库处理机器学习数据集,涵盖数据读取、概览、清洗、转换、切分和保存等步骤。通过Pandas,可以从CSV等格式加载数据,进行缺失值、异常值处理,数据类型转换,如归一化、类别编码,并实现训练集与测试集的划分。此外,还展示了如何保存处理后的数据,强调了Pandas在数据预处理中的重要性。
392 0
|
26天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
77 4

热门文章

最新文章