(python)数据分析-描述性统计

前言

在进行更深入的数据分析之前,描述性统计是一种有效的初步探索工具。它可以帮助发现数据中的异常值。下面,主要会演示如何对数据进行初步的分析,通过描述性统计了解数据的特征.

目录

概念

下面操作用到的第三方库

数据来源

处理逻辑

代码实现

1.获取数据

2.描述性统计

3.频率分布图

3.百分比分布图

4.箱型图

总结


概念

描述性统计可以快速地为数据分析人员提供数据集的整体概况。通过计算集中趋势的指标(如均值、中位数、众数),可以了解数据的中心位置,大致知道数据集中在哪个数值附近。

在科学研究中,描述性统计可以帮助研究者初步了解实验数据的特征,为进一步的假设检验和建模提供基础。

下面操作用到的第三方库

  • matplotlib
  • numpy
  • pandas
  • sklearn

数据来源

sklearn)本身是一个用于机器学习的 Python 库,提供了一些数据集,其中包含了鸢尾花数据集(Iris dataset)

处理逻辑

  1. 先通过sklearn库,获取鸢尾花数据集;
  2. 利用pandas库的describe()函数生成描述性统计信息,它可以快速地对数据进行初步分析,提供关于数据分布、中心趋势和离散程度等方面的信息;
  3. 采用频率分布对鸢尾花的花萼宽度进行分析,了解分布特点;
  4. 采用百分比分布对鸢尾花的花瓣长度进行分析,了解分布特点;
  5. 采用箱型图对鸢尾花的花瓣宽度进行分析,了解分布特点;

代码实现

1.获取数据

python 复制代码
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
df = pd.DataFrame(X, columns=iris.feature_names)
print(df.columns)

2.描述性统计

python 复制代码
def iris_descriptive_table(df):
    # 使用 describe 函数进行描述性统计
    stats = df.describe()
    # 保留2位小数
    stats = stats.round(2)

    fig, ax = plt.subplots(figsize=(8.8, 4))

    # 隐藏坐标轴
    ax.axis('off')

    # 创建表格
    table = Table(ax, bbox=[0, 0, 1, 1])
    # 设置表格行数和列数
    nrows = stats.shape[0]
    ncols = stats.shape[1]

    # 设置表格标题行
    for j in range(ncols):
        table.add_cell(0, j + 1, width=1 / len(stats.columns), height=1 / len(stats.index), text=stats.columns[j],
                       facecolor='lightblue')

    # 设置表格列标题
    for i in range(nrows):
        table.add_cell(i + 1, 0, width=1 / len(stats.columns), height=1 / len(stats.index), text=stats.index[i],
                       facecolor='lightblue')

    # 填充表格内容
    for i in range(nrows):
        for j in range(ncols):
            val = stats.iloc[i, j]
            table.add_cell(i + 1, j + 1, width=1 / len(stats.columns), height=1 / len(stats.index),
                           text=str(stats.iloc[i, j]))

    ax.add_table(table)
    plt.title("Iris Describe Table")
    # 保存图像
    # plt.savefig('iris_descriptive_stats_table.png', dpi=300)
    # plt.close()
    plt.show()

3.频率分布图

python 复制代码
def iris_frequency_distribution(df):
    sepal_widths = df["sepal width (cm)"]

    # 计算频数分布
    hist, bin_edges = np.histogram(sepal_widths, bins=10)

    # 绘制频数分布图
    plt.bar(bin_edges[:-1], hist, width=np.diff(bin_edges), align='edge')
    plt.xlabel('Sepal Width')
    plt.ylabel('Frequency')
    plt.title('Frequency Distribution of Iris Sepal Width')
    # 保存图像
    # plt.savefig('iris_frequency_distribution.png', dpi=300)
    # plt.close()
    plt.show()

3.百分比分布图

python 复制代码
def iris_percentage_distribution(df):
    petal_lengths = df["petal length (cm)"]
    # 计算频数分布
    hist, bin_edges = np.histogram(petal_lengths, bins=10)

    # 计算频率分布
    frequencies = hist / len(petal_lengths)

    # 将频率转换为百分数
    percentages = frequencies * 100

    # 绘制频率分布图(以百分数显示 y 轴)
    plt.bar(bin_edges[:-1], percentages, width=np.diff(bin_edges), align='edge')
    plt.xlabel('Petal Length')
    plt.ylabel('Percentage(%)')
    plt.title('Percentage Distribution of Iris Petal Length')
    # plt.savefig('iris_percentage_distribution.png', dpi=300)
    # plt.close()
    plt.show()

4.箱型图

python 复制代码
def iris_boxplot(df):
    petal_widths = df["petal width (cm)"]
    # 绘制箱型图
    plt.boxplot(petal_widths)
    plt.xlabel('Iris')
    plt.ylabel('Petal Width')
    plt.title('Box Plot of Iris Petal Width')
    # plt.savefig('iris_boxplot.png', dpi=300)
    # plt.close()
    plt.show()

总结

在不进行复杂的统计分析的情况下,快速提供数据的基本特征。这对于在数据分析的早期阶段了解数据的性质非常有用。

相关推荐
cspttty8 小时前
哪些证书可以弥补学历不足
大数据·数据库·数据挖掘
SelectDB1 天前
为什么越来越多分析数据库开始重视实时更新,而不仅仅是查询性能?
大数据·数据库·数据分析
SelectDB1 天前
为什么今天值得重新比较 Apache Doris 和 StarRocks?
大数据·数据库·数据分析
shujudang1 天前
B2B 官网获客数据如何与 CRM 线索状态关联
大数据·数据挖掘·数据分析
叫我:松哥1 天前
基于Flask的教师评教管理系统,支持学生和教师两种角色登录
数据库·后端·python·数据挖掘·flask
DS随心转APP1 天前
【 AI做的表格怎么导出 】?AI 导出鸭让数据流转回归优雅
人工智能·chatgpt·数据挖掘·回归·word·ai导出鸭
lhldsg1 天前
课程排课实战指南:从需求分析到系统落地全流程
数据库·数据挖掘·需求分析
zgl_200537791 天前
源代码:跨数据库通用“字段级”数据血缘解析与图形化(2/3:标注信息的拆解、检验、保存)
大数据·数据库·数据仓库·sql·数据挖掘·etl·嵌入式实时数据库
circuitsosk1 天前
多智能体协同在能源数据分析中的实践:分配-执行-校验闭环架构设计
python·数据分析·wpf·能源·并行计算·多智能体系统·agent协作
传感器与混合集成电路1 天前
分布式光纤测温DTS系统:ZDTS-P2000与X1000参数对比及找漏监测应用
分布式·数据分析