小白学python

数据分析 | 简简单单,数据处理

2019-05-17  本文已影响0人  Demafic

0 导入数据

pd.read_csv('Iris.csv')
pd.read_csv('dataset.csv')

如果只是想要csv中的一部分那么可以指定参数usecols,获取指定行、列。

1 了解数据

首先罗列一些反应数据集基本信息的函数:

这里,大家可以回复 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 分析数据到底分析什么

这部分并没有深入涉及,因此放上几个资源,大家一起学习:

欢迎关注,共同成长!


foronepiece.JPG
上一篇 下一篇

猜你喜欢

热点阅读