그룹별 오브젝트 인쇄 방법
팬더와 그룹화한 결과를 인쇄하고 싶습니다.
데이터 프레임이 있습니다.
import pandas as pd
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
print(df)
A B
0 one 0
1 one 1
2 two 2
3 three 3
4 three 4
5 one 5
'A'로 그룹화한 후 인쇄할 때 다음과 같은 것이 있습니다.
print(df.groupby('A'))
<pandas.core.groupby.DataFrameGroupBy object at 0x05416E90>
그룹화된 데이터 프레임을 인쇄하려면 어떻게 해야 합니까?
이 경우:
print(df.groupby('A').head())
데이터 프레임을 그룹화하지 않은 것처럼 가져옵니다.
A B
A
one 0 one 0
1 one 1
two 2 two 2
three 3 three 3
4 three 4
one 5 one 5
나는 다음과 같은 것을 기대하고 있었다.
A B
A
one 0 one 0
1 one 1
5 one 5
two 2 two 2
three 3 three 3
4 three 4
간단한 조작:
grouped_df = df.groupby('A')
for key, item in grouped_df:
print(grouped_df.get_group(key), "\n\n")
폐지 통지:
ix
0.20.0에서 폐지되었습니다.
이것 또한 효과가 있다.
grouped_df = df.groupby('A')
gb = grouped_df.groups
for key, values in gb.iteritems():
print(df.ix[values], "\n\n")
선택적 키 그룹화의 경우:원하는 키를 삽입하여key_list_from_gb
에, 하다, 사용하다, 사용하다, 사용하다gb.keys()
: :
gb = grouped_df.groups
gb.keys()
key_list_from_gb = [key1, key2, key3]
for key, values in gb.items():
if key in key_list_from_gb:
print(df.ix[values], "\n")
단순히 표시하는 방법을 찾는 경우 descript()를 사용할 수 있습니다.
grp = df.groupby['colName']
grp.describe()
이렇게 하면 테이블이 깔끔해집니다.
이전 답변과 더불어:
예를 들면,
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
그럼 간단한 1라인 코드
df.groupby('A').apply(print)
주피터 노트apply
method는 멀티인덱스 데이터 프레임을 작성하는 데 도움이 됩니다.
by = 'A' # groupby 'by' argument
df.groupby(by).apply(lambda a: a[:])
출력:
A B
A
one 0 one 0
1 one 1
5 one 5
three 3 three 3
4 three 4
two 2 two 2
「 」를 by
출력에 표시되지 않도록 하려면 다음과 같이 열을 드롭하십시오.
df.groupby(by).apply(lambda a: a.drop(by, axis=1)[:])
출력:
B
A
one 0 0
1 1
5 5
three 3 3
4 4
two 2 2
왜 그런지 잘 ..iloc[:]
하지 않다[:]
앞으로 또는 현재)로 인해 , 다음 중 어떤 가 발생할 수 있습니다..iloc[:len(a)]
작합니니다다
의 행동을 확인되었습니다.head()
버전 0.12와 0.13 사이의 변경.그것은 나에게 벌레처럼 보인다.내가 이슈를 만들었다.
그러나 그룹별 작업은 실제로 그룹별로 정렬된 데이터 프레임을 반환하지 않습니다..head()
의 소지가 있습니다는 method를 할 수 이 경우 method는 method를 사용합니다.이것은 오브젝트를 재검사할 수 있는 편리한 기능입니다(이 경우,df
를 참조해 주세요을 사용하다의 groupby
, 즉 사물의 종류, 즉 사물의 종류, 사물의 종류입니다.GroupBy
you . 신신 must must must must must must must must must must must must.apply
,transform
, 「」filter
데이터 프레임 「시리즈」를 선택합니다.
이라면 A열로 정렬하는 것이 .df.sort('A')
.
다른 대안은 다음과 같습니다.
for name_of_the_group, group in grouped_dataframe:
print (name_of_the_group)
print (group)
또한 다른 간단한 대안은 다음과 같습니다.
gb = df.groupby("A")
gb.count() # or,
gb.get_group(your_key)
df.groupby('A').apply(display)
깔끔한 포맷을 제공하다
df.groupby('key you want to group by').apply(print)
다른 멤버가 언급했듯이 이것은 그룹별 객체를 시각화하는 가장 쉽고 간단한 솔루션입니다.
좋은 통찰력을 가진 Surya에게 감사한다.나는 그의 해결책을 정리하고 간단히 할 것이다:
for key, value in df.groupby('A'):
print(key, value)
GroupBy 오브젝트의 콜리스트()
print(list(df.groupby('A')))
다음과 같은 기능을 제공합니다.
[('one', A B
0 one 0
1 one 1
5 one 5), ('three', A B
3 three 3
4 three 4), ('two', A B
2 two 2)]
groupBy 데이터는 인쇄문으로 직접 볼 수 없지만 for loop을 사용하여 그룹 전체에 반복하여 볼 수 있습니다.데이터별로 그룹을 보려면 이 코드를 사용하세요.
group = df.groupby('A') #group variable contains groupby data
for A,A_df in group: # A is your column and A_df is group of one kind at a time
print(A)
print(A_df)
이것을 그룹별 결과로서 시행한 후에 출력을 얻을 수 있습니다.
도움이 되었으면 좋겠다
이것이 더 나은 범용 답변입니다.이 기능은 모든 그룹 이름과 값을 인쇄하거나 선택적으로 표시할 그룹을 하나 이상 선택합니다.
def print_pd_groupby(X, grp=None):
'''Display contents of a Panda groupby object
:param X: Pandas groupby object
:param grp: a list with one or more group names
'''
if grp is None:
for k,i in X:
print("group:", k)
print(i)
else:
for j in grp:
print("group:", j)
print(X.get_group(j))
이 예에서 세션 출력은 다음과 같습니다.
In [116]: df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
In [117]: dfg = df.groupby('A')
In [118]: print_pd_groupby(dfg)
group: one
A B
0 one 0
1 one 1
5 one 5
group: three
A B
3 three 3
4 three 4
group: two
A B
2 two 2
In [119]: print_pd_groupby(dfg, grp = ["one", "two"])
group: one
A B
0 one 0
1 one 1
5 one 5
group: two
A B
2 two 2
함수는 재사용 가능한 콘텐츠이므로 패키지 또는 함수 컬렉션에 포함시키고 다시는 "스크립트" 접근 방식을 다시 작성하지 않기 때문에 이것이 더 나은 답변입니다.
IMHO, 이런 건 판다 그룹비의 기본 제공 방식일 거예요.
까다로운 방법을 찾았어요. 브레인스토밍을 위해서요. 코드를 보세요.
df['a'] = df['A'] # create a shadow column for MultiIndexing
df.sort_values('A', inplace=True)
df.set_index(["A","a"], inplace=True)
print(df)
출력:
B
A a
one one 0
one 1
one 5
three three 3
three 4
two two 2
프로는 Groupby Object 대신 데이터 프레임을 반환하기 때문에 인쇄가 매우 쉽습니다.그리고 출력은 좋아 보입니다.단, 일련의 용장 데이터가 생성됩니다.
python 3의 경우
k = None
for name_of_the_group, group in dict(df_group):
if(k != name_of_the_group):
print ('\n', name_of_the_group)
print('..........','\n')
print (group)
k = name_of_the_group
보다 인터랙티브한 방법으로
DataFrameGroupBy 객체를 목록으로 변환하기만 하면 됩니다.ls_syslog_df = list(df.groupby('A')) print(ls_syslog_df)
get_group() 메서드를 사용합니다.
new_group = df.groupby(['A'])
get_group('')
메서드에 가져올 그룹의 이름을 입력합니다.
그룹화된 df의 모든 라인(또는 임의로 많은 라인)을 인쇄하려면:
import pandas as pd
pd.set_option('display.max_rows', 500)
grouped_df = df.group(['var1', 'var2'])
print(grouped_df)
언급URL : https://stackoverflow.com/questions/22691010/how-to-print-a-groupby-object
'source' 카테고리의 다른 글
MySQL 행 형식:고정과 동적의 차이점 (0) | 2022.09.22 |
---|---|
java.util을 변환하고 있습니다.해시맵 속성 (0) | 2022.09.22 |
peacle.dump 사용 - TypeError:는 바이트가 아닌 str이어야 합니다. (0) | 2022.09.22 |
릴레이셔널 데이터베이스를 수평으로 확장할 수 있다 (0) | 2022.09.22 |
Ajax 포스트에서 파일 다운로드 처리 (0) | 2022.09.22 |