V1 V2
0.5 2
0.8 13
0.7 5
0.9 25
1.2 4
...
請問如何按照區(qū)間對V2分組(統(tǒng)計最大值到最小值,分成n個區(qū)間),統(tǒng)計每個區(qū)間中所有V1值的平均數
使用pandas.cut和groupby
import pandas as pd
from io import StringIO
s = """
V1,V2
0.5,2
0.8,13
0.7,5
0.9,25
1.2,4"""
df = pd.read_csv(StringIO(s))
# 假設分成10組
step = (df.V2.max - df.V2.min)/10
bins = [df.V2.min() + i * step for i in range(11)]
result = df.groupby(pd.cut(df.V2, bins)).V1.mean()
輸出:
V2
(2.0, 4.3] 1.2
(4.3, 6.6] 0.7
(6.6, 8.9] NaN
(8.9, 11.2] NaN
(11.2, 13.5] 0.8
(13.5, 15.8] NaN
(15.8, 18.1] NaN
(18.1, 20.4] NaN
(20.4, 22.7] NaN
(22.7, 25.0] 0.9
Name: V1, dtype: float64對 v2 列分組,映射成分組 ID 列,然后做平均值統(tǒng)計便可。
請參考以下代碼
'''
按區(qū)間對某列做分組,然后統(tǒng)計各組的另一列的平均值。
author: 李毅
'''
import numpy as np
import pandas as pd
df = pd.DataFrame([
[0.1, 1],
[0.2, 2],
[0.3, 3],
[0.4, 4],
[0.5, 5],
[0.6, 6],
], columns=['v1', 'v2'])
# 對列 v2 分組。
# 除了 np.histogram ,還可以用等距法等分區(qū)間,這取決于你的業(yè)務需求。
ranges = np.histogram(df.v2.values, 3)[1]
def tag_v2(value, ranges):
''' 用分組 ID 對 v2 值做標簽。 '''
for i in range(len(ranges) - 1):
if value >= ranges[i] and value <= ranges[i+1]:
return i
return -1
# 添加 v2 標簽列。
df['v2_tag'] = df.v2.apply(lambda i: tag_v2(i, ranges))
print df
輸出結果
v1 v2 v2_tag
0 0.1 1 0
1 0.2 2 0
2 0.3 3 1
3 0.4 4 1
4 0.5 5 2
5 0.6 6 2
統(tǒng)計平均值
print df.groupby('v2_tag')['v1'].mean()
輸出結果
v2_tag
0 0.15
1 0.35
2 0.55
Name: v1, dtype: float64北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。