0 导入数据
pd.read_csv('Iris.csv')
pd.read_csv('dataset.csv')
如果只是想要csv中的一部分那么可以指定参数usecols
,获取指定行、列。
1 了解数据
首先罗列一些反应数据集基本信息的函数:
-
head(x)
显示数据的前x行。 -
tail(x)
显示数据集的最后x行,但顺序依然不变。 -
shape()
得到数据集的行数和列数 -
columns()
得到列名的,输出列表。 -
info()
得到关系数据集的信息,如各列的数量、类型、空值数量等。 -
describes()
对数据集做一些基本的计算,如平均值,最大、小值等。 -
value_counts()
查看Series
对象唯一值的个数。
这里,大家可以回复 Iris 获取Iris.csv进行实例操作。
2 数据清洗
当我们拿到一个数据后,数据不可能是规规整整,等着被分析的,一般来说会有如下几种情况:
格式规范
数据缺失
数据冗余
我们以从git hub上下下来的dataset.csv
作为练习对象。
格式规范
有时数据集的列名过于繁杂,不易书写和理解,可以用函数ewname()
对列名进行更改。
比如:
new_name = {'Full Name':'Full_Name',Data of Birth':'Data_of_Birth'}
df.rename(columns=new_name)
同时可以重新设置索引;
df.set_index('Full_Name')
当然,这里就不需要啦。
对于字符串的规范同样重要,常用的方法如下:
lower()
upper()
capitalize()
replace()
strip()
split()
get()
contains()
lower()
和upper()
能将大写变为小写或是小写变成大写。
df['Quote'] = df['Quote'].str.lower()
replace()
则能替换掉特定字符,可将收入里的$替换:
df['Income'] = df['Income'].str.replace('$','')
split()
则以设定的字符作为分隔符,输出分割后的列表,我们对Full_Name以空格为分隔符,进行分隔:
df['Name'] = df['Full_Name'].str.split(' ')
然后通过get()
获取列表中任意位置的字符:
df['First_Name'] = df['Name'].str.get(0)
df['last_Name'] = df['Name'].str.get(1)
strip()
则可以去除字符串中的空格、\t\n。
contains()
则可判断是否存在某一字符:
df[df['Phone'].str.contains('610|170')]
#字符内是否存在610后者170
match()
则判断字符的开头是否有某一字符:
df['Phone'].str.match('610|170')
更改数值格式可以通过astype()
实现:
df['Income'] = df['Income'].astype(int)
数据缺失
可以通过info()
看到在country中有两个空值,因此:
df.dropna(subset=['Country'])
其中,由参数subset指定区域,选定该区域上的空值将整行删除。
在上面的replace()
操作后,某些就成了空值,可以选择直接删除,也可以选择填入平均值。但是可以看到虽然空格内没有数值,但其实不算NAN,因此需要一步转化
p = df[df['Income']==''].index.tolist()
df = df.drop(p)
现在,我们来检验以下,是否还有空值:
df.isnull()
函数isnull()
则将数据集中为空的值显示为True.
当然,有时候是可以对缺失值进行填补,比如填上平均值,中位数等,这时候可以使用函数fillna()
。
df['Income'] = df['Income'].str.replace('$','')
df['Income'] = df['Income'].str.replace(',','')
df['Income'] = pd.to_numeric(df['Income'])
income_mean = df['Income'].mean()
df['Income'] = df['Income'].fillna(income_mean)
数据冗余
删除重复数据:
df = df.drop_duplicates()
3 分析数据到底分析什么
这部分并没有深入涉及,因此放上几个资源,大家一起学习:
- 数据分析网:http://www.afenxi.com/
- GrowingIO博客:https://blog.growingio.com/
- 书籍:《谁说菜鸟不会数据分析》、《精益数据分析》等
欢迎关注,共同成长!
foronepiece.JPG
网友评论