专栏首页毛利学Python了解数据分析

了解数据分析

数据分析的四大重要组成部分:

1.数据采集。它是我们的原材料,也是最 “接地气” 的部分,因为任何分析都要有 数据源

2.数据清理。它可以是处理原材料的一部分,任何东西都有杂质。

3.数据挖掘。它可以说是最 “高大上” 的部分,也是整个商业价值所在。之所以要进行数据分析,就是要找到其中的规律,来指导我们的业务。因此数据挖掘的核心是挖掘数据的商业价值,也就是我们所谈的商业智能 BI

4.数据可视化 。它可以说是数据领域中 万金油 的技能,可以让我们直观地了解到数据分析的结果。

数据采集:

数据源:

1.开源数据库 
2.爬虫抓取 
3.日志采集 
4.传感器

工具使用:

1.八爪鱼 
2.火车采集器 
3.搜集客

数据质量的准则

数据清理4个关键点 “完全合一” :

1、完整性:单条数据是否存在空值,统计的字段是否完善。

2、全面性:观察某一列的全部数值,比如在 Excel 表中,我们选中一列,可以看到该列的平均值、最大值、最小值。我们可以通过常识来判断该列是否有问题,比如:数据定义、单位标识、数值本身。

3、合法性:数据的类型、内容、大小的合法性。比如数据中存在非 ASCII 字符,性别存在了未知,年龄超过了 150 岁等。

4、唯一性:数据是否存在重复记录,因为数据通常来自不同渠道的汇总,重复的情况是常见的。行数据、列数据都需要是唯一的,比如一个人不能重复记录多次,且一个人的体重也不能在列指标中重复记录多次。

数据清理:

1.完整性:

问题 1:缺失值

在数据中有些年龄、体重数值是缺失的,这往往是因为数据量较大,在过程中,有些数值没有采集到。通常我们可以采用以下 三种方法

删除:删除数据缺失的记录;


均值:使用当前列的均值;


高频:使用当前列出现频率最高的数据。

比如我们想对 df[‘Age’] 中缺失的数值用平均年龄进行填充,可以这样写:

df['Age'].fillna(df['Age'].mean(), inplace=True)  # inplace表示是否直接在元数据上修改

如果我们用最高频的数据进行填充,可以先通过 valuecounts 获取 Age 字段最高频次 agemaxf,然后再对 Age 字段中缺失的数据用 age_maxf 进行填充:

age_maxf = train_features['Age'].value_counts().index[0]
train_features['Age'].fillna(age_maxf, inplace=True)

问题 2:空行我们发现数据中有一个空行,除了 index 之外,全部的值都是 NaN。Pandas 的 read_csv() 并没有可选参数来忽略空行,这样,我们就需要在数据被读入之后再使用 dropna() 进行处理,删除空行。

# 删除全空的行
df.dropna(how='all',inplace=True)

2.全面性

问题:列数据的单位不统一

如将磅(lbs)转化为千克(kgs):

# 获取 weight 数据列中单位为 lbs 的数据
rows_with_lbs = df['weight'].str.contains('lbs').fillna(False)
print df[rows_with_lbs]
# 将 lbs 转换为 kgs, 2.2lbs=1kgs
for i,lbs_row in df[rows_with_lbs].iterrows():
  # 截取从头开始到倒数第三个字符之前,即去掉 lbs。
  weight = int(float(lbs_row['weight'][:-3])/2.2)
  df.at[i,'weight'] = '{}kgs'.format(weight)

3.合理性

问题:非 ASCII 字符

如在数据集中 Fristname 和 Lastname 看到有一些非 ASCII 的字符。我们可以采用删除或者替换的方式来解决非 ASCII 问题,这里我们使用删除方法:

# 删除非 ASCII 字符
df['first_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)
df['last_name'].replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)

4.唯一性

问题 1:一列有多个参数

为了达到数据整洁目的,将

d=True),将列表拆成新的列,再将原来的 Name 列删除。

# 切分名字,删除源数据列
df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

问题 2:重复数据

# 删除重复数据行
df.drop_duplicates(['first_name','last_name'],inplace=True)

数据挖掘:

数学基础:

1.概率论与数据统计  
2.线性代数 
3.图论  
4.最优化方法

基本流程:

商业理解 -> 数据理解 -> 数据准备 -> 模型建立 -> 模型评估 -> 上线发布

十大算法:

分类算法:c4.5、朴素贝叶斯算法、SVM、KNN、Adaboost、CART

聚类算法:K-Means、EM

关系分析:Apriori

连接分析:PageRank

数据可视化:

工具:

1.使用python 的Matplotlib、Seaborn等第三方库  

  2.第二种就是使用第三方工具。如果你已经生成了 csv 格式文件,想要采用所见即所得的方式进行呈现,可以采用微图、DataV、Data GIF Maker 等第三方工具,它们可以很方便地对数据进行处理,还可以帮你制作呈现的效果。

数据分析项目

注意的两点:

不重复造轮子
如果已经有了成熟的第三方工具,就不要进行重复的开发,因为这样耗时耗力,还没什么成效.
工具决定效率
使用使用者最多的工具,因为Bug少,文档全,案例多。
对工具有着高熟练度,可以提升我们的认知模型。

本文分享自微信公众号 - 毛利学Python(sen13717378202),作者:小sen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • elasticsearch三节点集群搭建

    原文:https://maoli.blog.csdn.net/article/details/104312880

    润森
  • 什么是Spring Cloud项目,我把它讲清楚了

    最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。

    润森
  • Leetcode之有效的括号

    润森
  • 函数

    定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需要调用其函数名即可。

    py3study
  • MySQL timeout调研与实测

    接触网络编程我们不得不提的就是超时,TCP建立连接的超时,数据报文发送/接收超时等等,mysql在超时上也做足了功夫。

    九州暮云
  • 动手练一练,做一个现代化、响应式的后台管理首页

    大家好,今天我们将一起从零开始纯手工建一个后台管理首页。关于后台管理模板,每个公司的要求都不一样,有的能用就行也丑不丑无所谓,或者用个开源模板凑合下就行啦。如果...

    前端达人
  • jsp中的警告:Attribute (cellpadding) is obsolete. Its use is discouraged in HTML5 documents.

    Attribute (width) is obsolete. Its use is discouraged in HTML5 documents. 属性(宽度)...

    黑泽君
  • 手把手教你打造超级CTF平台

    这其中呢,具有代表的CTF比赛有老牌的WCTF、XCTF,还有各大厂所举办的数不清的CTF比赛,这里为了避免广告嫌疑, 不写上了。

    FB客服
  • [golang][hugo]使用Hugo搭建静态站点

    hugo下载地址:https://github.com/gohugoio/hugo

    landv
  • 电商网站分析实践(中)

    第二部分:从产品放入购物车到订单达成 用户已选择好了产品并放入到购物车中,这时我们的任务就是保证用户购买支付的流程可以尽量流畅,使得尽量多的用户可以到达订单达成...

    小莹莹

扫码关注云+社区

领取腾讯云代金券