使用正态分布填充Pandas Dataframe

时间:2019-11-22 14:40:49

标签: python pandas numpy

我想用遵循正态分布的数字填充数据框。目前,我正在随机填充它,但是分布是平坦的。 a列的均值和标准差分别为5和1,b列的均值和标准差分别为15和1。

import pandas as pd
import numpy as np

n = 10
df = pd.DataFrame(dict(
  a=np.random.randint(1,10,size=n),
  b=np.random.randint(100,110,size=n)
))

3 个答案:

答案 0 :(得分:2)

这应该有效;

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

n = 200
df = pd.DataFrame(dict(
  a=np.random.normal(1,10,size=n),
  b=np.random.normal(100,110,size=n)
))

plt.style.use("ggplot")
fig, ax = plt.subplots()
ax.plot(df["a"])
ax.plot(df["b"], color="b")
plt.show()
plt.clf()

Generated Plot

答案 1 :(得分:1)

尝试一下。 randint没有从普通距离中选择。 normal可以。同样也不知道您在minmax的参数中为b提出了100和110。

n = 10
a_bar = 5; a_sd = 1
b_bar = 15; b_sd = 1
df = pd.DataFrame(dict(a=np.random.normal(a_bar, a_sd, size=n),
                       b=np.random.normal(b_bar, b_sd, size=n)),
                  columns=['a', 'b'])

答案 2 :(得分:1)

我认为您使用了错误的numpy函数:np.random.randint离散均匀分布返回随机整数。如果您想要随机的正常分布,则需要使用np.random.normal,即:

import pandas as pd
import numpy as np

n = 10
df = pd.DataFrame(dict(
  a=np.random.normal(loc=5,scale=1,size=n),
  b=np.random.normal(15,1,size=n)
))

其中loc对应于平均值,scale对应于分布的标准偏差值。