我想计算对应于此数据帧的平均值的直方图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
答案 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)
希望这有效!让我知道。