python dataframe 특정 조건으로 개수 센 후 dataframe 다시 형성하는 방법 도와주세요.
조회수 1818회
df = pd.DataFrame([data])
에서 df를 print했을 때 나오는 데이터 테이블 구조는 다음과 같습니다.
각 날짜별로 code가 기록 되어 있는데 이것을 다음 사진처럼 1일 날짜마다 코드 3이 몇 개 있고 코드1이 몇 개 있는지 구분하고 싶습니다. 그리고 꺾은선 그래프로 1일 날짜마다 코드3의 개수 선 그리고 1일마다 코드 1의 개수 선을 표현한 그래프를 그리려는데 우선 데이터프레임 구조 변경부터 어떻게 해야할까요?
2 답변
-
https://stackoverflow.com/questions/39132742/groupby-value-counts-on-the-dataframe-pandas
>>> df = pd.DataFrame({"date":[ 505,505,505,506,506,506 ], "code":[3,3,1,3,2,1]}) >>> df date code 0 505 3 1 505 3 2 505 1 3 506 3 4 506 2 5 506 1 >>> df_code_count_by_date = df.groupby(["date", "code"]).size().unstack(fill_value=0) >>> df_code_count_by_date code 1 2 3 date 505 1 0 2 506 1 1 1 >>> print(df_code_count_by_date.to_markdown()) | date | 1 | 2 | 3 | |-------:|----:|----:|----:| | 505 | 1 | 0 | 2 | | 506 | 1 | 1 | 1 |
-
딱 아래정도 방법 생각하고 있었는데...unstack 을 활용하는 것이 더 나아보이네요.
df = pd.DataFrame({"date":[ 505,505,505,506,506,506 ], "code":[3,3,1,3,2,1]}) df.pivot_table(index='date', columns='code', aggfunc='size', fill_value=0) code 1 2 3 date 505 1 0 2 506 1 1 1
댓글 입력