excel学习库

excel表格_excel函数公式大全_execl从入门到精通

直方图 in Excel、PowerBI、Python and R

看了一下我的可视化汇总内容,基础的图形都还有很多坑需要填补,今天就开始填坑,尽量快点把常见的基础图形在几个软件中的坑都先填好。就从分类开始,从一维数据开始,筛选了一下,目前只有四类数据,就从最少的直方图开始。

直方图的作用主要是用来看数据的分布情况,我们接触最多的就是正态分布,但是除了正态分布,常见的还有均匀分布、二项分布、泊松分布、指数分布。为了全面演示,我们这里就把几种分布都用一遍。

首先需要数据,我们用最常用的工具Excel来拟合生成几种分布数据,每类数据生成2048条。下面是Excel的公式,复制到单元格就可以了↓

NORM.INV(RAND(), 0, 1) #标准正态分布

NORM.INV(RAND(), 100, 15) #均值100,标准差10的正态分布

RAND()*100 #1-100之间的均匀分布

上面三种分布就可简单通过公式直接在单元格中拖拽生成,但是后面几种分布就需要借助Excel的数据分析工具实现,步骤如下↓

  • 点击 Excel 的“数据”选项卡。
  • 在“数据分析”组中,选择“数据分析”。
  • 在弹出的对话框中,选择“随机数生成器”并点击“确定”。
  • 在“随机数生成器”对话框中,选择“分布类型”。就可以生成数据了。演示一下↓

然后最后两种分布我们就使用Python模拟数据了,比较简单快捷,代码如下↓

np.random.poisson(lam=2, size=2048)

np.random.exponential(scale=1.0, size=2048)

【Excel作图】

数据有了,我们就可以开始今天的主题,画直方图了。先用第一列数据演示一下↓

然后就很简单了,根据之前说的数据图表的构成要素,我们进行设置和美化就行了。需要注意的是,直方图的核心调整参数就是下面的两个,通过对BIn的调整,可以展示不同的柱子宽度和数量。

左边设置的是50bin,右边是20bin,可根据需求调整。然后我们按部就班的把剩下的几个图像画完就行了。如果我们要画很多相同的图形,可以把当前的图形保存模版,后面直接使用就行了,就不需要设置各种参数了

【PowerBI实现】

在PowerBI中也比较简单,但是默认的视觉对象里面没有直方图的选项,需要我们去市场中搜索Histogram。

试了几个视觉对象,都不是很友好,可调节的参数很有限,甚二项分布和泊松分布的结果出问题了。

【Python中实现】

在Python里面,画直方图就比较简单了,直接使用matplotlib里面的hist就可以了,把对应的参数简单加上就完成了↓

import os

os.chdir(r"C:\Users\wangf\Desktop")

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体为黑体

plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

import pandas as pd


df = pd.read_excel("分布数据.xlsx")

# 绘制直方图

plt.hist(df['标准正态分布'], bins=20, color='#33557d', edgecolor='black')

plt.xlabel('Value')

plt.ylabel('频率')

plt.title('直方图(标准正态分布)')

plt.show()

如果需要一次绘制很多图形,可以使用如下代码把图形放在一张画布上展示↓

# 创建一个新的画布

fig, axs = plt.subplots(2, 3, figsize=(15, 10))

# 绘制每一列的直方图

for i, col in enumerate(df.columns):

row = i // 3

col = i % 3

axs[row, col].hist(df[df.columns[i]], bins=20, color='#235c7d')

axs[row, col].set_title(df.columns[i])

plt.tight_layout()

plt.show()

【R语言中实现】

在R语言里面,常规的图像就建议使用ggplot来实现,下面是绘制直方图的代码↓

library(readxl)

file_path <- "C:/Users/wangf/Desktop/分布数据.xlsx"

data <- read_excel(file_path)


library(ggplot2)


ggplot(data, aes(x = data_df[,1])) +

geom_histogram(fill = "skyblue",

color = "black",

bins = 30) +

labs(title = "标准正太分布直方图",

x = "Values",

y = "频率") +

theme(plot.title = element_text(size = 20))


同样,可以把六列数据绘制在一个画布中,代码如下↓

# 将数据转换为长格式

data_long <- gather(data, key = "variable", value = "value")


ggplot(data_long, aes(x = value, fill = variable)) +

geom_histogram(color = "black", bins = 20) +

facet_wrap(~ variable, scales = "free") +

labs(x = "Values", y = "频率") +

theme(plot.title = element_text(size = 14)) +

ggtitle("六种分布数据的直方图效果") +

theme(plot.title = element_text(size = 20))

End

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接