python - 我可以从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)
可以吗,还是我需要将表格格式化为单列,如果是这样,最有效的方法是什么?
解决方案
我怀疑你会想先展平你的数据框,如下图所示。
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')
推荐阅读
- javascript - Object.Reduce 不返回正确的值
- python - TensorFlow 入门页面 - 打印前 5 行
- hadoop - 如何从配置单元查询中获取链接数据?
- vba - 比较并获得最佳日期和相关字段
- java - 随时接受更多 Observables 的 RxJava -2 Observables?
- webpack - 如何使用 webpack 预编译车把模板?
- python-3.x - Fsolve,从 matlab 复制代码,由于 Fsolve 要求,答案不匹配
- java - 需要 Java 数组帮助
- swift - 在没有 UINavigationController 的情况下使用 Alert 推送 UIViewController
- c# - 使用非英文文件名发布文件