前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >了解数据分析

了解数据分析

作者头像
润森
发布2019-09-25 15:03:32
1.2K1
发布2019-09-25 15:03:32
举报
文章被收录于专栏:毛利学Python毛利学Python

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

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

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

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

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

数据采集:

数据源:

代码语言:javascript
复制
1.开源数据库 
2.爬虫抓取 
3.日志采集 
4.传感器

工具使用:

代码语言:javascript
复制
1.八爪鱼 
2.火车采集器 
3.搜集客

数据质量的准则

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

代码语言:javascript
复制
1、完整性:单条数据是否存在空值,统计的字段是否完善。

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

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

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

数据清理:

1.完整性:

问题 1:缺失值

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

代码语言:javascript
复制
删除:删除数据缺失的记录;


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


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

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

代码语言:javascript
复制
df['Age'].fillna(df['Age'].mean(), inplace=True)  # inplace表示是否直接在元数据上修改

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

代码语言:javascript
复制
age_maxf = train_features['Age'].value_counts().index[0]
train_features['Age'].fillna(age_maxf, inplace=True)

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

代码语言:javascript
复制
# 删除全空的行
df.dropna(how='all',inplace=True)

2.全面性

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

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

代码语言:javascript
复制
# 获取 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 问题,这里我们使用删除方法:

代码语言:javascript
复制
# 删除非 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 列删除。

代码语言:javascript
复制
# 切分名字,删除源数据列
df[['first_name','last_name']] = df['name'].str.split(expand=True)
df.drop('name', axis=1, inplace=True)

问题 2:重复数据

代码语言:javascript
复制
# 删除重复数据行
df.drop_duplicates(['first_name','last_name'],inplace=True)

数据挖掘:

数学基础:

代码语言:javascript
复制
1.概率论与数据统计  
2.线性代数 
3.图论  
4.最优化方法

基本流程:

代码语言:javascript
复制
商业理解 -> 数据理解 -> 数据准备 -> 模型建立 -> 模型评估 -> 上线发布

十大算法:

代码语言:javascript
复制
分类算法:c4.5、朴素贝叶斯算法、SVM、KNN、Adaboost、CART

聚类算法:K-Means、EM

关系分析:Apriori

连接分析:PageRank

数据可视化:

工具:

代码语言:javascript
复制
1.使用python 的Matplotlib、Seaborn等第三方库  

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

数据分析项目

注意的两点:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据分析的四大重要组成部分:
    • 数据采集:
      • 数据质量的准则
        • 数据清理:
          • 数据挖掘:
          • 数据可视化:
        • 数据分析项目
        相关产品与服务
        腾讯云 BI
        腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档