从熊猫直方图数据帧计算平均值

时间:2016-05-16 23:17:44

标签: python numpy pandas matplotlib

我想计算对应于此数据帧的平均值的直方图bin:

      class          Area
0       1-10  1.675883e+06
1      11-20  1.026733e+06
2      21-30  6.102651e+05
3      31-40  6.281576e+05
4      41-50  4.710967e+05
5      51-60  4.236068e+05
6      61-70  4.015372e+05
7      71-80  3.619052e+05
8      81-90  3.386376e+05
9     91-100  3.333406e+05
10   101-110  2.423542e+05
11   111-120  2.388251e+05
12   121-130  1.440134e+05
13   131-140  1.849219e+05
14   141-150  5.982432e+06

所以,答案应该是哪个类对应于平均值。平均值基于每个类的面积。不知道如何继续这个。

答案将是与平均值相对应的类的名称,例如31 - 40

3 个答案:

答案 0 :(得分:1)

如果这是直方图,则它不是单峰的。你确定你想要区域值的平均值吗?

要查看问题,您可以绘制它:

import matplotlib.pyplot as plt
df.plot(x='class',y='area')
plt.axhline(df['area'].mean(),color='r')
df['area'].plot(kind='bar')

您可以选择几个不同的类别。 如果您正在寻找最接近该区域平均值的类(但请确保您知道这意味着什么,datawise):

首先计算每个类的平均值的绝对距离,然后选择与最小距离具有相同索引的类。:

df['dist']=abs(df['area']-df['area'].mean())
df['class'][df['dist'].idxmin()] # not considering multiple minima
df['class'][df['dist']==df['dist'].min()] #considering multiple minima

请参阅here以绘制情节中的红色条。

答案 1 :(得分:1)

您可以使用instruments failed to start the app获取插入位置。虽然分布确实是.searchsorted(),但有点奇怪,这依赖于对数据进行排序。

bimodal

答案 2 :(得分:0)

首先将数据框读取为(df)。然后你可以找到该区域的平均值:

import pandas as pd
import numpy as np

df = df.sort_values(['Area']) #<-- sort the dataframe depending on area value
mu = df['Area'].mean()


for i,j in df.iterrows():
 if j['Area'] < mu:
 cl = j['class']


print('mean lies in class')
print(cl)

希望这有效!让我知道。