Python Pandas:".value_counts" 출력을 데이터 프레임으로 변환
안녕하세요. 데이터 프레임의 고유값 개수를 알고 싶습니다.count_values는 이를 구현하지만 출력을 다른 곳에서 사용하고 싶습니다..count_values 출력을 판다 데이터 프레임으로 변환하려면 어떻게 해야 합니까?다음은 예제 코드입니다.
import pandas as pd
df = pd.DataFrame({'a':[1, 1, 2, 2, 2]})
value_counts = df['a'].value_counts(dropna=True, sort=True)
print(value_counts)
print(type(value_counts))
출력:
2 3
1 2
Name: a, dtype: int64
<class 'pandas.core.series.Series'>
필요한 것은 다음과 같은 데이터 프레임입니다.
unique_values counts
2 3
1 2
감사해요.
인덱스 및 :의 열 이름에 사용합니다.
df = df.value_counts().rename_axis('unique_values').reset_index(name='counts')
print (df)
unique_values counts
0 2 3
1 1 2
또는 하나의 열 DataFrame이 필요한 경우 다음을 사용합니다.
df = df.value_counts().rename_axis('unique_values').to_frame('counts')
print (df)
counts
unique_values
2 3
1 2
저도 같은 문제에 부딪혔기 때문에 여기서 제 생각을 말씀드리겠습니다.
경고문
데이터 구조를 처리할 때Pandas
반품 유형을 알고 있어야 합니다.
여기에 있는 또 다른 솔루션
@jezrel이 전에 언급했듯이,Pandas
API를 제공합니다.pd.Series.to_frame
.
1단계
또한 포장할 수 있습니다.pd.Series
로.pd.DataFrame
하는 것만으로
df_val_counts = pd.DataFrame(value_counts) # wrap pd.Series to pd.DataFrame
그러면, 당신은.pd.DataFrame
열 이름으로'a'
그리고 당신의 첫 번째 열이 색인이 됩니다.
Input: print(df_value_counts.index.values)
Output: [2 1]
Input: print(df_value_counts.columns)
Output: Index(['a'], dtype='object')
2단계
그럼 어쩌라는 거야?
여기에 새 열 이름을 추가하려는 경우pd.DataFrame
단순히 reset_index()의 API로 인덱스를 재설정할 수 있습니다.
그런 다음 API df.columns 목록으로 열 이름을 변경합니다.
df_value_counts = df_value_counts.reset_index()
df_value_counts.columns = ['unique_values', 'counts']
그러면 필요한 것을 얻을 수 있습니다.
Output:
unique_values counts
0 2 3
1 1 2
전체 답변 여기
import pandas as pd
df = pd.DataFrame({'a':[1, 1, 2, 2, 2]})
value_counts = df['a'].value_counts(dropna=True, sort=True)
# solution here
df_val_counts = pd.DataFrame(value_counts)
df_value_counts_reset = df_val_counts.reset_index()
df_value_counts_reset.columns = ['unique_values', 'counts'] # change column names
기본적으로 @wy-hsu 솔루션과 동일하지만 함수 형식으로 모자도 집어넣겠습니다.
def value_counts_df(df, col):
"""
Returns pd.value_counts() as a DataFrame
Parameters
----------
df : Pandas Dataframe
Dataframe on which to run value_counts(), must have column `col`.
col : str
Name of column in `df` for which to generate counts
Returns
-------
Pandas Dataframe
Returned dataframe will have a single column named "count" which contains the count_values()
for each unique value of df[col]. The index name of this dataframe is `col`.
Example
-------
>>> value_counts_df(pd.DataFrame({'a':[1, 1, 2, 2, 2]}), 'a')
count
a
2 3
1 2
"""
df = pd.DataFrame(df[col].value_counts())
df.index.name = col
df.columns = ['count']
return df
pd.DataFrame(
df.groupby(['groupby_col'])['column_to_perform_value_count'].value_counts()
).rename(
columns={'old_column_name': 'new_column_name'}
).reset_index()
데이터 프레임에서 열의 부분 집합 선택, 그룹화, 적용 예제value_count
그룹별, 이름value_count
로 열을 올리다.Count
및 첫 번째 n개의 그룹을 표시합니다.
# Select 5 columns (A..E) from a dataframe (data_df).
# Sort on A,B. groupby B. Display first 3 groups.
df = data_df[['A','B','C','D','E']].sort_values(['A','B'])
g = df.groupby(['B'])
for n,(k,gg) in enumerate(list(g)[:3]): # display first 3 groups
display(k,gg.value_counts().to_frame('Count').reset_index())
언급URL : https://stackoverflow.com/questions/47136436/python-pandas-convert-value-counts-output-to-dataframe
'programing' 카테고리의 다른 글
C#에서 사용자의 공용 IP 주소를 가져오는 방법 (0) | 2023.08.05 |
---|---|
add(), replace() 및 addToBackStack()의 차이 (0) | 2023.08.05 |
iframe의 현재 위치를 어떻게 알 수 있습니까? (0) | 2023.08.05 |
유형 ORM 0.3.7 데이터 소스 연결 풀이 갑자기 닫혔습니다. (0) | 2023.08.05 |
수행줄 제목에서 사용자 지정 글꼴을 설정하는 방법? (0) | 2023.08.05 |