2
groupby()에서 생성 된 Pandas 데이터 프레임을 플로팅 할 때 몇 가지 문제가 발생하며 이제는 RangeIndex가 있습니다. 나는 두 개의 열을 얻을 수있는 GROUPBY()를 적용Plot Pandas groupby 데이터 프레임
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
df.head()
# A B C D
# 0 83 99 55 83
# 1 91 42 14 27
# 2 44 4 30 9
# 3 96 46 92 73
# 4 91 73 17 36
: A와 지금
gb = df.groupby(pd.cut(df.A, 10)).B.mean()
gb
# A
# (-0.099, 9.9] 38.272727
# (9.9, 19.8] 49.800000
# (19.8, 29.7] 55.000000
# (29.7, 39.6] 50.454545
# (39.6, 49.5] 46.285714
# (49.5, 59.4] 44.800000
# (59.4, 69.3] 48.500000
# (69.3, 79.2] 55.615385
# (79.2, 89.1] 45.500000
# (89.1, 99] 51.866667
# Name: B, dtype: float64
gb_df = gb.to_frame().reset_index()
gb_df
# A B
# 0 (-0.099, 9.9] 38.272727
# 1 (9.9, 19.8] 49.800000
# 2 (19.8, 29.7] 55.000000
# 3 (29.7, 39.6] 50.454545
# 4 (39.6, 49.5] 46.285714
# 5 (49.5, 59.4] 44.800000
# 6 (59.4, 69.3] 48.500000
# 7 (69.3, 79.2] 55.615385
# 8 (79.2, 89.1] 45.500000
# 9 (89.1, 99] 51.866667
B.
의 평균 예를 들어, 여기 내 입력 네 개의 열이있는 데이터입니다 , A와 B를 플롯하려고하면 A 열이 RangeIndex이므로 오류가 발생합니다.
plt.scatter(x=gb_df.A, y=gb_df.B)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# ValueError: could not convert string to float: (89.1, 99]
이상적으로는 A 열의 RangeIndex의 하한을 X 축으로 표시하고 싶습니다. 따라서 이와 같은 데이터는 매우 유용 할 것입니다 :
# A B
# 0 -0.099 38.272727
# 1 9.9 49.800000
# 2 19.8 55.000000
어떤 도움을 주셔서 감사합니다.
감사합니다! 어떻게 그 '왼쪽'의 사용을 발견 했습니까? 나는 'RangeIndex'에 대한 팬더 문서 페이지를보고 아무 것도 찾을 수 없었다 : https://pandas.pydata.org/pandas-docs/version/0.21/generated/pandas.RangeIndex.html – stackoverflowuser2010
@ stackoverflowuser2010 남자, 미안, 그것은 왼쪽에 있어야합니다 ... – Wen
@ stackoverflowuser2010 나는 전에 동일한 문제에 직면하고 나서 소스 코드에 가서, 당신은 RangeIndex가 간격에 의해 생성되고, 간격이 스스로 좌우의 호출을한다는 것을 알게 될 것이다. ;-) – Wen