机器学习基础(2) pandas
文章目录
1. pandas概述
在上文中,我们已经详细的介绍了Numpy,而本节的内容,则是着重介绍Pandas的用法。因为在机器学习中,许多的数据我们并不是保存在txt中,而是保存在Excel中。相较于两者,Numpy更加适合处理通过的数值数组数据,而pandas是基于Numpy构建的,专门为了处理表格和混杂数据而设计的库。
2. pandas的基本操作
好了,废话不多说,我们直接上教程~
首先,为了引入pandas包,需要键入以下命令。
import pandas as pd
ps:本次教程演示的数据用例下载地址请注意:此文件需要和代码放在同一路径下
2.1 基本操作–读取文件
import pandas as pd
import numpy as np
'''
pd.read_csv("my_file.csv",sep=";",encoding="latin-1",nrows=100,shiprows=[2,5])
除了read_csv(),比较常用的一般还有 read_excel
'''
##准备读取数据
data = pd.read_csv("example.csv")
print(data)
'''
Output:
Product Unique ID Product Title \
0 RING-1 18k White Gold Ring With Pink Sapphire (New)
1 NX-TOTE-1 NaN
2 NX-TOTE-1 Adorable NX Dome Tote (New)
3 TOP-1 Sexy One Piece High Cut Monokini Swimming Suit...
4 HEADPHONES-1 NaN
5 TEAPOT-1 NaN
6 HAT-1 NaN
Starting Bid Buy Now Price Variation Unique ID Variation Size \
0 1.0 10.0 NaN NaN
1 1.0 NaN NX-TOTE-1-BLACK NaN
2 1.0 10.0 NX-TOTE-1-PINK NaN
3 1.0 10.0 TOP-1-S-WHITE NaN
4 1.0 NaN NaN NaN
5 NaN NaN NaN NaN
6 NaN NaN NaN NaN
Variation Color Variation Quantity Status Campaign Name \
0 NaN NaN NaN My 1st Campaign
1 Black 10.0 NaN NaN
2 Pink 10.0 NaN NaN
3 NaN 100.0 NaN NaN
4 NaN NaN Enabled My 1st Campaign
5 NaN NaN NaN NaN
6 NaN NaN NaN 1st Promo Campaign
Unnamed: 10
0 <- Update the product's title, starting bid an...
1 <- Add a new variation.
2 <- Add a new variation and update the product'...
3 <- Update an existing variation's quantity and...
4 <- Designate sale status (“Enabled” for auctio...
5 <- Remove from a campaign by leaving Campaign ...
6 <- Move from one campaign to another by changi...
'''
2.2 基本操作–写数据
除了需要了解读取的操作之外,我们还需要知道如何将数据保存在csv文件中,pandas库给我们提供了一个很好的方法:to_csv()
##index=None表示数据会以原来的样子写入,如果没有这一列,写入的数据会多出来一列序号列(1,2,3....)
##准备数据
data = {
"ID ":[1,2,3,4],
"Name ":["Xia0","Wang","Yin","Hong"],
" Age":[12,15,13,15],
" Address":["Earth","Moon","",""],
}
##将数组字典转化成DataFrame类型
data = pd.DataFrame(data)
data.to_csv("my_file.csv",index=None)
'''
特别注意:
IF 字典value 的 type == list:
THEN :
data = pd.DataFrame(data)
data.read_csv("myfile.csv",index=None)
IF 字典value 的 type == string
THEN :
data = pd.DataFrame(data,index=[0])
data.read_csv("myfile.csv",)
因为pandas的dataframe需要一个可迭代的对象
'''
2.3 基本操作–统计数据
##给出基本的统计数据
data = pd.read_csv("example.csv")
data.describe()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89wfO90n-1594783651862)(https://img.vim-cn.com/74/dd97653b1e32b9a2969b6fac33a13368f538ae.png)]
2.4 基本操作–查看数据
##准备数据
data = pd.DataFrame(pd.read_csv("my_file.csv"))
##查看前两行数据
print(data.head(2))
##打印出第1行
print(data.loc[1])
## 打印名为ID的列
print(data['ID'])
##打印第[1,3)的数据集
print(data.loc[range(1,3)])
2.5 基本操作–pandas函数
pandas有两种数据结构,分别是series和DataFrame
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrSCP02B-1594783651871)(https://img.vim-cn.com/e7/c229e125b684379fe783e1e08cefc100d179e7.png)]
创建series
##创建series
import numpy as np
import pandas as pd
arr1 = np.arange(10)
s1 = pd.Series(arr1)
print(s1)
'''
OUTPUT:
index value
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
'''
创建DataFrame
import pandas as pd
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
df= pd.DataFrame(data)
'''
OUTPUT:
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2
'''
2.6 基本操作–pandas基本功能
函数 | 功能 |
---|---|
.append(idx) | 连接另一个Index对象,产生新的Index对象 |
.diff(idx) | 计算差集,产生新的Index对象 |
.intersection(idx) | 计算交集 |
.union(idx) | 计算并集 |
.delete(loc) | 删除loc位置处的元素 |
.insert(loc,e) | 在loc位置增加一个元素 |
2.7 基本操作–数据清洗
在机器学习中,获取到的的特征肯定会有缺失的数据,如果放任不管,将会对我们最终训练的模型产生不可预估的错误,因此数据清洗显得多么的重要~
在pandas中使用的是浮点值NAN(np.NAN)表示缺失的值。
函数 | 简介 |
---|---|
.info() | 查看数据的信息,包括每个字段的名称、非空数量、字段的数据类型。 |
.isnull() | 返回一个同样长度的值为布尔型的对象(Series或DataFrame),表示哪些值是缺失的,**.notnull()**为其否定形式。 |
.dropna() | 删除缺失数据.对于Series对象,dropna返回一个仅含非空数据和索引值的Series。对于DataFrame对象,dropna默认删除含有缺失值的行;如果想删除含有缺失值的列,需传入axis = 1作为参数;如果想删除全部为缺失值的行或者列,需传入how='all’作为参数;如果想留下一部分缺失数据,需传入thresh = n作为参数,表示每行至少n个非NA值。 |
.fillna(value,method,limit,inplace) | 填充缺失值。value为用于填充的值(比如0、'a’等)或者是字典(比如{‘列’:1,‘列’:8,……}为指定列的缺失数据填充值) |
2.8 数据转化
.replace(old, new):用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。
.duplicated():判断各行是否是重复行(前面出现过的行),返回一个布尔型Series。
3. 参考博客
4. 写在最后
各位同学,请你们记住,在计算机领域中,最重要的事情是什么呢?实践,别人的东西终究是别人的,只有实践才能够将别人的东西转化成自己的,相信你们一定能够行的,加油~
最后,如果有志同道合的朋友想一起讨论的,请加QQ群【662151913】萌新AI的入坑之旅