欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据分析相关概念和基础操作

程序员文章站 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、唯一性

  • 一列有多个参数
  • 重复数据