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少,文档全,案例多。
对工具有着高熟练度,可以提升我们的认知模型。
完