当前位置: 首页 > backend >正文

数据 分析

        应用统计和计算方法,识别数据特征与规律.

1 分析方法

1.1 描述性分析

        总结和呈现数据的基本特征;特点是简单直观.

1.1.1 集中趋势分析

        ①均值:数据总和除以数据个数,反映数据的平均水平;特点是易受极端值影响;用于了解整体平均情况,例如计算班级学生平均成绩.

        ②中位数:将数据排序后,位于中间位置的值或中间两数平均值;特点是不受极端值干扰;用于数据存在极端值时寻找典型水平;例如统计城市居民收入水平.

        ③众数:数据中出现次数最多的数值;用于分析类别数据,能反映最常见的情况,例如统计产品畅销型号.

1.1.2 离散程度分析

        ①极差:最大值与最小值的差值;特点是计算简单,能直观反映数据的波动范围;用于快速了解数据波动情况;例如分析每日股票价格波动.

        ②方差和标准差:衡量数据离散程度,数值越大则数据越分散;用于判断数据的稳定性,例如评估运动员比赛成绩稳定性.

1.1.3 分布分析

        ①频率分布:统计不同数值或区间出现的频率;能直观展示数据的分布形态;用于了解数据的分布特征,例如分析学生成绩分布.

        ②正态分布检验:判断数据是否符合正态分布;用于分析服从正态分布的数据,例如分析某产品质量指标是否呈正态分布,以决定能否使用特定质量控制方法.

1.2 诊断性分析

        发现数据中的问题、关系或模式,支持后续决策.

1.2.1 相关性分析

        ①皮尔逊相关系数:衡量两个数值型变量之间线性相关程度,绝对值越接近1则说明线性相关性越强,0表示无线性相关;用于判断两者关联紧密程度,例如分析身高与体重的关系.

        ②卡方检验:用于检验两个分类变量之间是否存在显著关联,如研究性别与购买产品类型之间是否有关联.

1.2.2 异常值检测

1.3 规范性分析

       提供决策支持和预测未来趋势.

1.3.1 分组分析

        分组统计,透视表分析.

1.3.2 对比分析

        同环比分析,分类对比分析.

1.3.3 趋势分析

        时间序列分析,周期性分析.

1.4 基于业务规则

        可用于各分析阶段.

1.4.1 合规性检查

(1) 数据字典匹配

        建立数据字典,比对分类型数据与字典中的合法取值,保障数据合法性.在数据预处理时可用于检查数据合法性,在数据分析时可用于验证数据是否符合业务规范.

1.4.2 流程逻辑校验

        验证数据流转是否符合业务流程.特点是确保业务正常运转.可在数据预处理阶段检查数据是否符合流程逻辑,在数据分析阶段辅助判断业务流程是否存在问题.

1.4.3 阈值预警

        依据业务标准设定阈值触发警报,实时监控异常.在数据预处理、分析、建模等阶段,都可用于及时发现异常情况.

1.4.4 数据关联检查

        根据数据间业务逻辑关系,验证不同数据间关联是否合理,保障数据逻辑连贯.在数据预处理时可检查数据关联是否正确,在数据分析时可发现数据间潜在的逻辑问题,在数据建模和挖掘阶段可确保模型输入数据的逻辑合理性.

1.4.5 业务规则匹配

        对比数据与预设规则,精准筛查问题,在各阶段都可用于根据业务规则对数据进行审查和分析,如在数据预处理时筛选不符合规则的数据,在数据分析时基于业务规则解读分析结果.

2 分析内容

2.1 数据的整体概述

        提供数据集的基本信息,包括数据量、时间跨度、地理范围和主要字段.

import pandas as pd# 创建示例数据
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],'年龄': [25, 30, 35, 40, 45, 50, 55, 60],'性别': ['男', '男', '女', '女', '男', '女', '男', '女'],'收入': [5000, 6000, 7500, 8000, 9000, 10000, None, 12000],'工作年限': [2, 3, 5, 7, 10, 12, 15, 18],'部门': ['销售', '销售', '研发', '研发', '市场', '市场', '财务', '财务']
}
df = pd.DataFrame(data)print("原始数据:")
print(df.head(3).to_string())# 1. 筛选年龄大于30且部门为研发的数据
print("\n1. 筛选结果:")
filtered = df[(df['年龄'] > 30) & (df['部门'] == '研发')]
print(filtered.to_string())# 2. 按收入降序排序
print("\n2. 排序结果:")
sorted_data = df.sort_values('收入', ascending=False)
print(sorted_data.to_string())# 3. 计算月收入
print("\n3. 计算新列结果:")
df['月收入'] = df['收入'] / 12
print(df[['姓名', '收入', '月收入']].to_string())# 4. 合并姓名和部门列
print("\n4. 合并列结果:")
df['信息'] = df['姓名'] + ' - ' + df['部门']
print(df[['信息', '姓名', '部门']].to_string())# 5. 转换年龄列为浮点数类型
print("\n5. 数据类型转换结果:")
df['年龄'] = df['年龄'].astype(float)
print(f"年龄列类型: {df['年龄'].dtype}")

2.2 数据的基本统计信息

        计算数据的核心统计指标和分布特征,以便理解数据的整体特征.分析方法有集中趋势分析、离散程度分析、分布分析.

2.2.1 集中趋势分析

import pandas as pddata = {'年龄': [25, 30, 30, 40, 45],'工资': [5000, 6000, 7000, 8000, 9000]
}
df = pd.DataFrame(data)# 通用描述性统计
summary = df.describe()
print("通用描述性统计:\n", summary)
# 统计单列的描述性信息
print("Age statistics:\n", df['年龄'].describe())# 特定统计量计算
sum_age = df['年龄'].sum()
print("\n年龄总和:", sum_age)count_age = df['年龄'].count()
print("年龄计数:", count_age)min_age = df['年龄'].min()
print("年龄最小值:", min_age)max_age = df['年龄'].max()
print("年龄最大值:", max_age)average_age = df['年龄'].mean()
print("平均年龄:", average_age)median_salary = df['工资'].median()
print("工资中位数:", median_salary)mode_age = df['年龄'].mode()
print("年龄众数:\n", mode_age)std_salary = df['工资'].std()
print("工资标准差:", std_salary)var_salary = df['工资'].var()
print("工资方差:", var_salary)q25_salary = df['工资'].quantile(0.25)
print("工资列的25%分位数:", q25_salary)

(2) 分布分析

import pandas as pd# 创建示例数据
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],'年龄': [25, 30, 35, 40, 45, 50, 55, 60],'性别': ['男', '男', '女', '女', '男', '女', '男', '女'],'收入': [5000, 6000, 7500, 8000, 9000, 10000, None, 12000],'工作年限': [2, 3, 5, 7, 10, 12, 15, 18],'部门': ['销售', '销售', '研发', '研发', '市场', '市场', '财务', '财务']
}
df = pd.DataFrame(data)# 统计每个部门的频数(返回Series)
department_counts = df['部门'].value_counts(dropna=False)# 输出结果(按频数降序排列)
print(department_counts)    

2.3 数据的分组与汇总

        根据时间或业务维度对数据进行分组,并计算汇总指标,以揭示不同维度的表现分析方法有分组分析、汇总统计.

import pandas as pd# 使用你最初的数据源
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],'年龄': [25, 30, 35, 40, 45, 50, 55, 60],'性别': ['男', '男', '女', '女', '男', '女', '男', '女'],'收入': [5000, 6000, 7500, 8000, 9000, 10000, None, 12000],'工作年限': [2, 3, 5, 7, 10, 12, 15, 18],'部门': ['销售', '销售', '研发', '研发', '市场', '市场', '财务', '财务']
}
df = pd.DataFrame(data)# 输出原始数据
print("=== 原始数据 ===")
print(df.to_string())# 1. 按性别分组统计人数和平均年龄(使用agg)
print("\n=== 按性别分组的统计信息 ===")
gender_stats = df.groupby('性别').agg(人数=('姓名', 'count'),平均年龄=('年龄', 'mean'),平均收入=('收入', 'mean')
).reset_index()
print(gender_stats)# 2. 按收入区间分组(自定义分组,使用agg)
print("\n=== 按收入区间分组的统计 ===")
def income_category(x):if x < 6000:return '低收入'elif x < 9000:return '中等收入'else:return '高收入'df['收入等级'] = df['收入'].apply(income_category)
income_stats = df.groupby('收入等级').agg(人数=('姓名', 'count')
).reset_index()
print(income_stats)    

2.4 数据的趋势与变化

        分析数据随时间的变化趋势和周期性波动,以识别增长、下降或稳定的模式.分析方法有时间序列分析、周期性分析.

import pandas as pddata = {'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],'sales': [1000, 1200, 900, 1500, 1300]
}
df = pd.DataFrame(data)# 确保日期字段是日期时间格式
df['date'] = pd.to_datetime(df['date'])
# 按日期排序(确保时间序列的顺序正确)
df = df.sort_values('date')
# 设置日期为索引(方便时间序列分析)
df.set_index('date', inplace=True)# 输出处理后的数据
print("处理后的时间序列数据:\n",df)

2.5 数据的对比与差异

        通过同比、环比和分类对比分析,识别不同时间段或类别之间的差异.分析方法有同环比分析,分类对比分析.

2.5.1 同环比分析

import pandas as pd# 使用简单的示例数据
data = {'日期': ['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01'],'产品': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'],'销售额': [12000, 15000, 8000, 9500, 10000, 14000, 7000, 9000],'利润': [2000, 3000, 1500, 2000, 1800, 2500, 1200, 1800]
}
df = pd.DataFrame(data)# 将日期列转换为datetime类型
df['日期'] = pd.to_datetime(df['日期'])# 打印原始数据
print("\n=== 原始数据 ===")
print(df.to_string())# 按月聚合销售额
monthly_data = df.groupby(df['日期'].dt.to_period('M'))['销售额'].sum().reset_index()
monthly_data.columns = ['月份', '销售额']# 1. 同比分析 (YoY - Year over Year)
year_month_sales = monthly_data.copy()
year_month_sales['年月'] = year_month_sales['月份'].astype(str)  # 转为字符串格式
year_month_sales['月份'] = year_month_sales['月份'].dt.month  # 提取月份数字# 计算同比增长率及同期数
year_month_sales['同期销售额'] = year_month_sales.groupby('月份')['销售额'].shift(1)
year_month_sales['同比增长率(%)'] = year_month_sales.groupby('月份')['销售额'].pct_change(1) * 100print("\n=== 同比分析 ===")
print(year_month_sales[['年月', '销售额', '同期销售额', '同比增长率(%)']].to_string(index=False))# 2. 环比分析 (MoM - Month over Month)
# 计算环比增长率及环期数
monthly_data['环期销售额'] = monthly_data['销售额'].shift(1)
monthly_data['环比增长率(%)'] = monthly_data['销售额'].pct_change() * 100print("\n=== 环比分析 ===")
print(monthly_data.to_string(index=False))

2.5.2 分类对比分析

import pandas as pd# 使用简单的示例数据
data = {'日期': ['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01'],'产品': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B'],'销售额': [12000, 15000, 8000, 9500, 10000, 14000, 7000, 9000],'利润': [2000, 3000, 1500, 2000, 1800, 2500, 1200, 1800]
}
df = pd.DataFrame(data)# 按产品分类对比
product_comparison = df.groupby('产品').agg(销售额总和=('销售额', 'sum'),销售额均值=('销售额', 'mean'),利润总和=('利润', 'sum'),利润均值=('利润', 'mean')
).reset_index()  # 恢复产品列为普通列# 计算销售额占比
total_sales = df['销售额'].sum()
product_comparison['销售额占比(%)'] = (product_comparison['销售额总和'] / total_sales) * 100# 计算利润率
product_comparison['利润率(%)'] = (product_comparison['利润总和'] / product_comparison['销售额总和']) * 100print("\n=== 产品分类对比(方法一)===")
print(product_comparison.to_string(index=False))

2.6 异常值与关键点

        识别数据中的异常值和关键点,以便关注显著变化或重要数据点.

http://www.xdnf.cn/news/6274.html

相关文章:

  • AD 局部铺铜
  • 职坐标解析职业规划核心五步骤
  • 谷歌web第三方登录
  • 解锁数据的力量:数据治理的新篇章与未来蓝图“
  • Chrome浏览器实验性API computePressure的隐私保护机制如何绕过?
  • ZYNQ PS VDMA②
  • ElasticSearch高级功能
  • 使用matlab进行数据拟合
  • hghac8008漏洞扫描处理
  • [Java实战]Spring Boot 3整合JWT实现无状态身份认证(二十四)
  • 文章记单词 | 第73篇(六级)
  • 【AI面试秘籍】| 第9期:Transformer架构中的QKV机制深度解析:从原理到实践实现
  • Lord Of The Root: 1.0.1通关
  • 安卓system/文件夹下的哪些文件夹可以修改为别的设备的
  • 【信息系统项目管理师】第5章:信息系统工程 - 36个经典题目及详解
  • Agent Builder API - Agent Smith 扩展的后端服务(开源代码)
  • 【Java学习笔记】toString方法
  • MySQL 数据库基础
  • 右值引用的学习
  • cGAS-STING通路
  • 线程同步机制
  • GO 小游戏在线试水
  • UE中:puerts使用指南(持续更新)
  • 服务器时间发生跳变导致hghac中对应主机状态频繁切换为crash或stop
  • 从Transformer到多模态智能,剖析人工智能时代的核心引擎​​
  • Linux服务之lvs集群与dr模式部署
  • Xsens发布专为生物力学打造的全新人体模型
  • centos6.10在Macbook m芯片上使用
  • Android 设置系统默认通话应用,打不开通话界面
  • VSCode python配置