首页 > 解决方案 > 我可以从excel中获取表格并在python中绘制直方图吗?

问题描述

我有 2 个表,一个 10 x 110 和一个 35 x 110,它们都包含来自我教授提供的指数分布函数的随机数。任务是证明统计学中的中心极限定理。

我想尝试的是:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

"importing data"
df1 = pd.read_excel(r'C:\Users\Henry\Desktop\n10.xlsx')
df2 = pd.read_excel(r'C:\Users\Henry\Desktop\n30.xlsx')
df1avg = pd.read_excel(r'C:\Users\Henry\Desktop\n10avg.xlsx')
df2avg = pd.read_excel(r'C:\Users\Henry\Desktop\n30avg.xlsx')

"plotting n10 histogram"
plt.hist(df1, bins=34)

plt.hist(df1avg, bins=11)


"plotting n30 histogram"
plt.hist(df2, bins=63)

plt.hist(df2avg, bins=11)

可以吗,还是我需要将表格格式化为单列,如果是这样,最有效的方法是什么?

标签: pythonexcelpandas

解决方案


我怀疑你会想先展平你的数据框,如下图所示。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

N = np.random.exponential(1, [40, 5])
df = pd.DataFrame(N) # convert to dataframe
bin_edges = np.linspace(0,6,30)

plt.figure()
plt.hist(df, bins = bin_edges, density = True)
plt.xlabel('Value')
plt.ylabel('Probability density')

非扁平直方图

每个 bin 的多 (5) 种颜色线条显示了数据框每一列的直方图。

幸运的是,这并不难调整。您可以将数据框转换为 numpy 数组并将其展平

plt.hist(df.to_numpy().flatten(), bins = bin_edges, density = True)
plt.ylabel('Probability density')
plt.xlabel('Value')

扁平直方图


推荐阅读