pandas fillna_【数据分析工具】一文学完pandas所有技巧(一)

上篇文章介绍了pandas的数据结构。趁热打铁,接下来几篇教程,我们会利用pandas对真实的数据集进行探索。

此次实验数据下载地址:数据集

这篇文章主要要掌握的知识点:

  1. 外部数据的导入
  2. 熟悉数据集的骚操作

1 外部数据的导入

只有获取数据源,才能进行分析,所以导入数据是数据分析必不可少的一步。常用pandas中read_X方法,这里的X表示导入数据的格式,比如xlsx、csv、txt、sql等类型,本文以工作中常用的xlsx格式为例。

01 导入xlsx格式的数据集

在python中导入xlsx格式的数据集用的方法为read_excel()。这里顺带提一下,导出的xlsx格式的数据集的方法为to_excel()。

# 获取外部数据

注意:导入数据时需指定文件路径,也就是需指定数据集所在文件夹位置,同时需要在路径前加字母“r”(它是一个转义符),可防止路径中的""被转义。

02 导入数据集时指定相应的工作表

一个xlsx文件是一个工作簿,一个工作簿中含有多张工作表,导入时需要设定的参数是:sheet_name,我们可以指定工作表的名称或者传入工作表的顺序来决定导入哪张表,如果没有设定该参数,默认导入第一个工作表,即下图中house这个工作表。

cd628a070b57416783b84d2f55bfe46f.png
# 方法一:我们这里指定第二个sheet表名

或者

# 方法二:指定sheet的位置,默认第一个为0,我们如果想导入第二sheet_name指定为1即可

程序打印结果均为:

6e72687327edf84d07ce8286c067b2d6.png

03 导入数据集时指定导入的列

再导入数据集时,我们可以选择性选取我们需要的列,这样可以简化我们的数据集和减少电脑内存占用,需设定的参数为usecols。

# 通过设定usecols参数来指定要导入的列,参数也是从0开始的
House_Data3=pd.read_excel(r"C:Usershao.daiML呀zhihu数据集.xlsx",usecols=[0,1,2,3,5])
House_Data3.head()

程序打印结果:

ccb5dfed73ad5196c9edb93481ffd579.png

2 熟悉数据集的骚操作

01 查看数据表的前几行或后几行

利用head()查看数据表前几行

# 利用head()函数查看前几行我们前面用过了,括号中的2表示查看前两行
House_data.head(2)

程序打印结果:

a0496e0b98609a624c5b1f6045ba2619.png

利用tail()查看数据表后几行

# 利用tail函数查看数据集中最后两行,括号中的数字代表你想查看的行数
House_data.tail(2)

程序打印结果:

8e10bee5e5fdbab8b2b8d134c1a4180c.png

02 查看数据表大小

通过shape函数可以了解数据表有多少行多少列。

# 查看数据表的大小
House_data.shape

程序打印结果:

1297b52b9171343427755114ae780959.png

由输出的结果我们可以知道数据表有2993行,32列。

03 查看数据表数据类型

通过info()可以了解数据表存在哪些数据类型。

# 查看数据类型
House_data.info()

程序打印结果:

93bd2dc3bf773298922c5677d617bf39.png

注:这里不仅可以看出数据的类型,还可以看出数据表中是否存在缺失值。

04 查看数值数据的分布情况

了解数据类型后,可以通过describe()查看数值数据的分布情况,即均值、最值、分位数、标准差等。

# 查看数值分布情况
House_data.describe()

程序打印结果:

7d3e110c4b7fd9fbdb2f70d00da9683b.png

05 查看类别数据的数量

通过value_counts()了解类别数据的分布数量。

# 查看类别分布情况
House_data['houseDecoration'].value_counts()

程序打印结果:

a8cf8bf2cfd58f9bf8baed479cd8986c.png

注:“houseDecoration”这个特征结果中发现存在“70年”这个异常值,这个可是爬虫爬取数据时,没有处理好程序导致抓取错位。

06 缺失值的处理

通过isnull()可以判断哪些值是缺失值,在数据分析中缺失值的处理方法有很多,可以利用dropna()删除缺失值,也可以利用fillna()填充缺失值。

判断哪些缺失值:

# 利用isnull()判断哪些是缺失值
House_data.isnull()

程序打印结果:

f5e0283fe1d2925e54c9fa20838aa00e.png

注:True表示此处为缺失值

删除缺失值

# 利用dropna()删除含有缺失值的行
House_data.dropna().shape

程序打印结果:

a43f92e18041637ab6930d0757939bf5.png

注:为了方便观察是否删除了含有缺失值的行,我们再次利用shape函数来查看删除缺失值后数据表的大小;如果只想删除空白行,可以向dropna()方法传入how=all即可。

填充缺失值:

# 利用fillna()填充缺失值
House_data.fillna("牛牛不在牛了")

程序打印结果:

61bcaaea6ff9eb97ace5d5953dcb9c22.png

注:本文使用的填充值只是为了更好的演示(滑稽脸.jpg),在实际数据分析中,我们可以采用均值填充、众数填充、或者算法填充等。

当然我们也可以对于不同列填充不同的值,我们分别向houseLastTrade这列填充这列的众数,houseAgeLimit这列填充“牛牛”:

# 利用fillna()多列填充缺失值
House_data.fillna({"houseLastTrade":House_data.houseLastTrade.mode()[0],"houseAgeLimit":"牛牛"})

程序打印结果:

b32d2febace73fa5c1a45831f4642f8a.png

07 重复值的处理

通过drop_duplicates()可以对数据表中重复值进行判断,默认会保留重复值中第一行。

#利用drop_duplicates()进行重复值的删除
House_data.drop_duplicates()

注:由于数据表中没有整行的数据完全一样,这里就不演示了。

08 数据类型的转换

在数据处理过程经常会遇到数据类型的问题,当拿到数据的时候,首先需要确定拿到的是正确类型的数据,一般通过数据类型的转化。

通过dtype()或者面所提到的info()对数据类型进行查看,通过astype()进行数据类型转换。

# 通过dtypes方法查看数据类型
House_data.dtypes

程序打印结果:

442329c2b69835b291f2efd6a0d067a6.png
# 通过astype()将houseId的int类型改成float类型
House_data['houseId'].astype("float").dtypes

程序打印结果:

f46f18ac5b1ecaa998d8a092aa80208f.png

09 索引的设置

上篇文章中《【数据分析工具】pandas之初体验》 我们已经了解到了DataFrame中分为行索引和列索引。

通过set_index()可以重新设置索引列;通过reset_index()可以还原索引列;通过rename()可以修改索引名,即索引重命名。

为了方便观察,我们先打印一张未进行索引设置的打印结果:

1b5e7ab6bb97af70db570d1f244dddfc.png
# 通过set_index()将houseTitle列指定为行索引
House_data.set_index('houseTitle')

程序打印结果:

2b5c204c9b674d009c45c69108877090.png
# 通过reset_index()可以还原索引
House_data.reset_index()

程序打印结果:

e5dcbcf5675c709fc23e73b93b1c908e.png

注:可以设置drop参数为True,删除原索引。

# 通过rename()重命名行列索引

程序打印结果:

8cdfd78674d829eee42b69b2f71a92b6.png

到目前为止,我们已经学习了pandas的数据结构,数据的导入,数据的查看预览以及数据预处理中部分骚操作,接下来的文章我会继续更新pandas中其它功能,敬请期待,如果有啥疑问的可以联系小编哦!欢迎斧正指导,记得点赞转发,您的鼓励是我创作的动力!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值