在经过前期的学习后,我们需要一些实例操作来加深我们对pandas的熟悉程度。今天带来的是L在pandas学习之旅中,针对Adult数据集的一些学习笔记。
数据来源:https://archive.ics.uci.edu/ml/datasets/Adultarchive.ics.uci.edu
下载不了的同学可以从这里下载:
链接:https://pan.baidu.com/s/1RfueHHRJRAWPJVvB6KIdDgpan.baidu.com
提取码:5cr0
首先,将文件导入我们的python中。(我用的是jupyter notebook )
import numpy as np
import pandas as pd
由于本次实例的主要目的是为了实践我们的pandas使用技巧,为了让一些刚刚接触数据分析和pandas的小伙伴更容易接受本次学习的内容,在正式实验之前,我将会对这个数据集做一些处理:包括修改特征名(列名)、删除某些特征列,以减少数据集的复杂度等。
df = pd.read_csv(r'C:\Users\Administrator\Desktop\adult.csv',header=None,encoding='utf-8')
df.drop(columns=[1,2,4,10,11],axis=1,inplace=True)
df.columns=['年龄', '教育程度', '婚姻状况', '职业', '家庭关系','人种','性别','每周工作时间','祖国','工资']
导入成功~
下面开始我们的实例学习之路~
1、查看我们数据的信息
data.head() #查看数据前五行
data.tail() #查看数据后几行
data.shape #查看数据的大小(几行几列),查看矩阵或数组的维数
data.describe() #观察数据的描述性统计信息,观察是否有异常值
(1)
df.head()
(2)
df.shape
可以看到我们的数据有32561个样本,共10个特征(标签)。
(3)
df.info()
可以看到,我们的数据集很完整,没有缺失值。(如果有的话就要进行缺失值填补了,忘了的同学可以看这里下面的链接)侦探L:如何处理Pandas里的缺失值(入门篇1)zhuanlan.zhihu.com
(4)在对我们的数据有初步了解后,下一步是根据我们的需求对数据进行操作,获取我们想要的信息。
由于本次实例旨在学习,因此我们可以对数据进行任意处理,以得到我们想知道的内容,下面是我本人设置的一些小题目:
1、查看数据集中的性别组成:
df['性别'].value_counts(normalize=True)
可以看到,调查的人中男性占67%,女性占33%。
2、统计在数据集中,不同种族和性别人群的年龄分布。
grouped=df['年龄'].groupby([df['人种'],df['性别']])
grouped.describe()
3、再来看看不同国籍每周工作时长的具体情况:
在这里,我们先使用group函数对我们的数据进行分组,然后用agg函数使用聚合操作。
df1=df['每周工作时间'].groupby(df['祖国']).agg(['mean','max','min'])
接着我们用.sort_values函数实现排序的功能。
df1.sort_values(by='mean',ascending=True)
忘记这三个函数的同学可以看下我之前的文章~侦探L:如何使用Python对数据进行排序(入门篇)zhuanlan.zhihu.com侦探L:如何使用groupby函数对数据进行分组(1)zhuanlan.zhihu.com
侦探L:如何使用agg函数对数据进行分组聚合zhuanlan.zhihu.com
接着我们就可以查看一下排序之后的结果了:
下面,我们重点研究在这个数据集中,工资与其他特征之间的联系(即研究一个人的其他特征是否影响他的工资收入)
首先让我们来看看“工资”这一列的具体信息。
df['工资'].value_counts()
在工资这一列中,只有“<=50K”和“>50K”两种情况。
再看看年龄和工资的关系。
df['年龄'].groupby(df['工资']).agg(['mean','min','max'])
从均值可以看到,工资在“50K”以上的,年龄要明显大一点。
再看看工资与教育程度的关系。
df['教育程度'].groupby(df['工资']).value_counts()
(这里看不懂英语的同学可以自行百度哦~)
当然了,教育程度与工资水平是否有明显关联,不能仅仅从这里就看出来。
由于时间问题,本次Adult数据集实例化学习先到这了,后续我会再出一篇写接下来的部分。
以上便是的内容,感谢大家的细心阅读,同时欢迎感兴趣的小伙伴一起讨论、学习,想要了解更多内容的可以看我的其他文章,同时可以持续关注我的动态~