数据分析相关概念和基础操作
程序员文章站
2024-03-07 21:23:39
...
1、商业智能 BI、数据仓库 DW、数据挖掘 DM
商店利用数据预测用户购物行为属于商业智能,他们积累的顾客的消费行为习惯会存储在数据仓库中,通过对个体消费行为分析总结出来的规律属于数据挖掘。
- 商业智能(Business Intelligence):BI。是基于数据仓库,经过数据挖掘,得到商业价值的过程。
- 数据仓库(Data Warehouse):DW。是数据库的升级概念,数量上数据仓库更庞大,适用于数据挖掘和数据分析。
- 数据挖掘(Data Mining):DM。其核心技术包括分类、聚类、预测、关联分析等任务。
2、元数据、数据元
元数据:描述其他数据的数据。比如人的身高、体重、姓名等属性就可以看成是一个人得到元数据。元数据使信息的描述和分类实现了结构化,让机器处理起来更方便。
数据元:最小数据单元
3、数据挖掘
(1)、几个重要的数据挖掘任务
- 分类:通过训练集得到分类模型,用这个模型对其他数据分类。
- 聚类
- 预测
- 关联分析:发现数据中的关联规则,被广泛应用于购物篮分析、或事务数据分析中。
(2)、数据挖掘过程
数据库中知识发现过程:
输入数据 —— 数据预处理 —— 数据挖掘 —— 后处理 —— 信息
预处理:
- 数据清洗:去处重复数据,去噪、填充缺失值
- 数据集成:将多个数据源中的数据存放在一个统一的数据存储中
- 数据变换:将数据转换成适合数据挖掘的形式。如归一化将属性数据按比例缩放。
后处理:
把结果进一步处理后,再导出。
(3)、数据清洗示例
示例数据集:
链接:https://pan.baidu.com/s/1bBG9MN0NfuWvwZokMFZmbA
提取码:yucf
将原始数据在excel中输入,然后保存为csv格式。
导入数据集:
import pandas as pd
df = pd.read_csv("11.csv")
print(df)
输出:
name age weight m0006 ... m1218 f0006 f0612 f1218
0 Micky Mous 56.0 70kgs 72.0 ... 71.0 NaN NaN NaN
1 Donald Duck 34.0 154.89lbs NaN ... NaN 85.0 84.0 76.0
2 Mini Mouse 16.0 NaN NaN ... NaN 65.0 69.0 72.0
3 Scrooge McDuck NaN 78kgs 78.0 ... 72.0 NaN NaN NaN
4 Pink Panther 54.0 198.658lbs NaN ... NaN 69.0 NaN 75.0
5 Huey McDuck 52.0 189lbs NaN ... NaN 68.0 75.0 72.0
6 Dewey McDuck 19.0 56kgs NaN ... NaN 71.0 78.0 75.0
7 Scoopy Doo 32.0 78kgs 78.0 ... 75.0 NaN NaN NaN
8 NaN NaN NaN NaN ... NaN NaN NaN NaN
9 Huey McDuck 52.0 189lbs NaN ... NaN 68.0 75.0 72.0
10 Louie McDuck 12.0 45kgs NaN ... NaN 92.0 95.0 87.0
1、完整性
- 空行
# 删除全空的行
df.dropna(how='all',inplace=True)
print(df)
- 缺失值
可见在上述表格中有很多缺失值,对于数据缺失我们有以下几种处理方法:
# 对age中的空值用均值来代替
df['age'].fillna(df['age'].mean(), inplace=True)
print(df)
# value_counts()可以获取age字段的最高频次值,然后将age中的空值用这各最高频数字代替
age_maxf = df['age'].value_counts().index[0]
df['age'].fillna(age_maxf, inplace=True)
print(df)
2、全面性
- 列数据单位不统一
# 获取 weight 数据列中单位为 lbs 的数据
rows_with_lbs = df['weight'].str.contains('lbs').fillna(False)
print(df[rows_with_lbs])
# 将 lbs 转换为 kgs, 2.2lbs=1kgs
# iterrows()是属于DataFrame(数据框)的遍历函数,一般与循环搭配
for i,lbs_row in df[rows_with_lbs].iterrows():
# 截取从头开始到倒数第三个字符之前,即去掉 lbs。
weight = int(float(lbs_row['weight'][:-3])/2.2)
# df.at是获取指定位置的值,以下是获得第i行,列名为"weight"的值。
# foemat是对指定列的weight进行替换
df.at[i,'weight'] = '{}kgs'.format(weight)
print(df)
3、合理性
- 非ASCII字符
4、唯一性
- 一列有多个参数
- 重复数据
推荐阅读
-
数据分析相关概念和基础操作
-
数据结构与算法分析之单链表的建立,插入和删除操作。
-
Java基础-数据结构之Stack和Queue源码分析
-
atitit.软件开发概念--过滤和投影数据操作
-
Js从头学起(基本数据类型和引用类型的参数传递详细分析)_基础知识
-
Python数据分析常用库-pandas库基础操作
-
栈和队列数据结构的基本概念及其相关的Python实现
-
栈和队列数据结构的基本概念及其相关的Python实现
-
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
-
DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)