用Pandas计数生成直方图

hwamh0ep  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(165)

我需要用Pandas的 Dataframe 制作一个动物的质量直方图。目标是在我的x轴上,我有CSV文件的不同质量,在我的y轴上,我有具有该质量的动物的数量。我是这个领域的初学者,我需要制作一个简单易懂的代码
下面是我目前的代码:
`

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

df = pd.read_csv("S:\Annee1\ISD\TP3\PanTHERIA_1-0_WR05_Aug2008.txt", sep='\t')

ax = (df
      .loc[:, ['5-1_AdultBodyMass_g', 'MSW05_Binomial']]
      .groupby('MSW05_Binomial')
      .count('MSW05_Binomial')
      .plot.bar(rot=45, figsize=(16, 8))
      )
ax.set_title('Masses corporelles de tous les animaux', fontsize=14)
ax.set_xlabel('Animaux', fontsize=12)
ax.set_ylabel('Masse corporelle', fontsize=12)

`

多谢了
PS:如果你对我的项目有任何疑问,请不要犹豫

0lvr5msh

0lvr5msh1#

您可以直接使用pandas.DataFrame.hist函数。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("S:\Annee1\ISD\TP3\PanTHERIA_1-0_WR05_Aug2008.txt", sep="\t")

ax = plt.axes()
mass_column = "5-1_AdultBodyMass_g"
df[(df[mass_column] < 1e4) & (df[mass_column] > 0)].hist(column=mass_column, bins=100, ax=ax)
ax.set_title("Masses corporelles de tous les animaux", fontsize=14)
ax.set_xlabel("Masse corporelle (g)", fontsize=12)
ax.set_ylabel("Nombre d'animaux", fontsize=12)
4ioopgfo

4ioopgfo2#

直方图允许我们将数据分组到箱中并绘制有多少值(计数)或值的频率(密度)落入这些箱中。同时,
1.不确定您的数据框是否足够清晰,尤其是对于要制作质量直方图的动物类型/数量
1.这取决于您在x轴上想要的质量范围,以创建箱
1.您可以使用matplotlib.pyplot.hist()方法来使直方图可视化,如下所示:

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

# select the data
mass = df["5-1_AdultBodyMass_g"]

# make bins
# for instance:
bins = [500, 1000, 1500, 2000, 2500, 3000]

# or 

bins = np.arange(0,100000,10000)

# make a plot
plt.hist(mass,bins=bins)
plt.title("Masses corporelles de tous les animaux")
plt.xlabel("Masses d'animaux")
plt.ylabel("Compter")
plt.show();

相关问题