小白学数据分析——数据清洗

数据分析中的数据清洗

数据清洗的自我理解

数据分析的过程中,在进行具体的数据处理、分析和可视化之前,要对数据进行数据的清洗,数据清洗在我的理解就是把数据中的“脏东西”处理掉。这些需要进行处理的数据大概分成一下几种:缺失值、重复值、异常值和数据类型有误的数据。

在我看来数据清洗步骤如下:
在这里插入图片描述
【Tips】
1.数据清洗时优先进行缺失值、异常值和数据类型转换的操作,最后进行重复值的处理。
2.在对缺失值、异常值进行处理时要根据业务的需求进行处理,这些处理并不是一成不变的,常见填充有:统计值填充(常用的统计值有均值、中位数、众数)、前/后值填充(一般使用在前后数据存在关联,比如数据是按照时间进行记录的)、零值填充。
3.在数据清洗之前最为重要的对数据表的的查看,要了解表的结构和发现需要处理的值,这样才能将数据清洗彻底。
4.数据量的大小也关系着数据的处理方式。如果总数据量较大,而异常的数据(包括缺失值和异常值)的量较少时可以选择直接删除处理,因为这并不太会影响到最终的分析结果;但是如果总数据量较小,则每个数据都可能影响这分析的结果,这时候就需要费心思去对数据进行处理(可能需要通过其他的关联表去找到想过数据进行填充)
5.在导入数据表后,一般需要将所有列一个个的都进行清洗,来保证数据处理的彻底,有些数据可能在看起来时正常的可以使用的,实则在进行处理时可能会出现问题(比如某列数据在查看时是看起来是数值但其实这列数据的类型却是字符串,这就会导致在进行数值操作无法使用)。

案例学习

(案例以数据清洗为主)

Google play store的app数据分析

数据的初步查看(确定导入数据的字段)

使用文本文档或Excel打开csv文件对文件进行初步的查看,其表的列属性如下:App,Category,Rating,Reviews,Size,Installs,Type,Price,Content Rating,Genres,Last Updated,
Current Ver,Android Ver
分析的字段如下:App,Category,Rating,Reviews,Size,Installs,Type(app名称、app类型、评分、评论数、软件大小、安装数量、收费类型)

数据的导入和查看

代码

# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 数据导入
df = pd.read_csv("./csv/googleplaystore.csv",usecols=(0,1,2,3,4,5,6))

# 数据查看
print(df.head(1))
print(df.shape)
print(df.count())
print(df.describe())

【结果】
App Category Rating
0 Photo Editor & Candy Camera & Grid & ScrapBook ART_AND_DESIGN 4.1

Reviews Size Installs Type
0 159 19M 10,000+ Free


(10841, 7)


App 10841
Category 10841
Rating 9367
Reviews 10841
Size 10841
Installs 10841
Type 10840
dtype: int64


Rating
count 9367.000000
mean 4.193338
std 0.537431
min 1.000000
25% 4.000000
50% 4.300000
75% 4.500000
max 19.000000

【分析】
1.第一个输出结果说明了表的结构,说明我们在导入数据时所选的列都正常的导入了。
2.第二个输出结果说明表的形状,表中一共有10841条记录,每条记录有7个字段。
3.第三个输出结果说明每个字段中非缺失值的个数,说明数据中Rating和Type中存在缺失值,需要进行处理。
4.第四个输出结果说明这些字段中只有Rating字段是数值类型的数据,其他数据要进行数值计算操作前需要进行类型转换。

数据清洗
Category的处理

原则上在处理数据时应该从第一列开始逐个检查并处理,但是对于App这列需要进行的去重的处理,在现实的情况中app的名称是可以相同的,只有表中的所有的内容全部相同才进行重复值删除操作,所以这一步放在所有数据处理完成后再进行数据的删除。先对Category这列进行处理。

数据查看
代码

# 对类型进行查看
df['Category'].value_counts(dropna=False)

【结果】
FAMILY 1972
GAME 1144
TOOLS 843
MEDICAL 463
BUSINESS 460
PRODUCTIVITY 424
PERSONALIZATION 392
COMMUNICATION 387
SPORTS 384
LIFESTYLE 382
FINANCE 366
HEALTH_AND_FITNESS 341
PHOTOGRAPHY 335
SOCIAL 295
NEWS_AND_MAGAZINES 283
SHOPPING 260
TRAVEL_AND_LOCAL 258
DATING 234
BOOKS_AND_REFERENCE 231
VIDEO_PLAYERS 175
EDUCATION 156
ENTERTAINMENT 149
MAPS_AND_NAVIGATION 137
FOOD_AND_DRINK 127
HOUSE_AND_HOME 88
AUTO_AND_VEHICLES 85
LIBRARIES_AND_DEMO 85
WEATHER 82
ART_AND_DESIGN 65
EVENTS 64
PARENTING 60
COMICS 60
BEAUTY 53
1.9 1
Name: Category, dtype: int64

【分析】结果中由单词组成的结果应该都是合理,但是有一条结果为1.9的数据有些异常,所以需要这条记录查找出来看看其产生异常的原因。

异常数据查看
代码

df[df['Category'] == '1.9']

【结果】
App Category Rating Reviews Size Installs Type
10472 Life Made WI-Fi Touchscreen Photo Frame 1.9 19.0 3.0M 1,000+ Free 0

【分析】经过查看可能是因为数据填充错位导致,因为数据量较大而这个异常数据只有一条,所以直接进行数据删除的处理。

异常数据处理
代码

df.drop(index=10472,inplace=True)
df[df['Category'] == '1.9']

【结果】
在这里插入图片描述
【分析】再次查看该条记录发现记录已经删除,完成了对Category的清理。

Rating的处理

数据查看
代码

# 对评分进行查看
df
  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值