- 피봇이란 무엇입니까?
- 어떻게 피벗합니까?
- 이것이 피벗입니까?
- 긴 형식을 넓은 형식으로?
피벗 테이블에 대해 많은 질문을 보았습니다. 피벗 테이블에 대해 묻는다는 것을 모르더라도 일반적으로 사용됩니다. 피봇 팅의 모든 측면을 포괄하는 정식 질문과 답변을 작성하는 것은 사실상 불가능합니다.
...하지만 나는 그것을 갈 것입니다.
기존 질문과 답변의 문제점은 종종 기존의 많은 정답을 사용하기 위해 OP가 일반화하는 데 어려움을 겪는 뉘앙스에 초점을 맞추는 것입니다. 그러나 답변 중 어느 것도 포괄적 인 설명을 시도하지 않습니다 (매우 어려운 작업이기 때문에)
내 Google 검색 에서 몇 가지 예를보십시오
- Pandas에서 데이터 프레임을 피벗하는 방법?
- 좋은 질문과 답변. 그러나 대답은 약간의 설명만으로 특정 질문에 대답합니다.
- 팬더 피벗 테이블을 데이터 프레임으로
- 이 질문에서 OP는 피벗의 출력과 관련이 있습니다. 즉, 열이 어떻게 보이는지. OP는 R처럼 보이기를 원했습니다. 팬더 사용자에게는별로 도움이되지 않습니다.
- 데이터 프레임을 피벗하고 행을 복제하는 팬더
- 또 다른 괜찮은 질문이지만 대답은 한 가지 방법, 즉
pd.DataFrame.pivot
- 또 다른 괜찮은 질문이지만 대답은 한 가지 방법, 즉
따라서 누군가를 검색 할 때마다 pivot
특정 질문에 대답하지 않는 산발적 인 결과가 나타납니다.
설정
아래 답변에서 어떻게 피봇 팅할지에 따라 열 및 관련 열 값을 눈에 띄게 명명했습니다.
import numpy as np
import pandas as pd
from numpy.core.defchararray import add
np.random.seed([3,1415])
n = 20
cols = np.array(['key', 'row', 'item', 'col'])
arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str)
df = pd.DataFrame(
add(cols, arr1), columns=cols
).join(
pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix('val')
)
print(df)
key row item col val0 val1
0 key0 row3 item1 col3 0.81 0.04
1 key1 row2 item1 col2 0.44 0.07
2 key1 row0 item1 col0 0.77 0.01
3 key0 row4 item0 col2 0.15 0.59
4 key1 row0 item2 col1 0.81 0.64
5 key1 row2 item2 col4 0.13 0.88
6 key2 row4 item1 col3 0.88 0.39
7 key1 row4 item1 col1 0.10 0.07
8 key1 row0 item2 col4 0.65 0.02
9 key1 row2 item0 col2 0.35 0.61
10 key2 row0 item2 col1 0.40 0.85
11 key2 row4 item1 col2 0.64 0.25
12 key0 row2 item2 col3 0.50 0.44
13 key0 row4 item1 col4 0.24 0.46
14 key1 row3 item2 col3 0.28 0.11
15 key0 row3 item1 col1 0.31 0.23
16 key0 row0 item2 col3 0.86 0.01
17 key0 row4 item0 col3 0.64 0.21
18 key2 row2 item2 col0 0.13 0.45
19 key0 row2 item0 col4 0.37 0.70
질문
왜 내가
ValueError: Index contains duplicate entries, cannot reshape
값이 열이고 값이 색인이며 평균이 값이
df
되도록 피벗하는 방법은 무엇입니까?col
row
val0
col col0 col1 col2 col3 col4 row row0 0.77 0.605 NaN 0.860 0.65 row2 0.13 NaN 0.395 0.500 0.25 row3 NaN 0.310 NaN 0.545 NaN row4 NaN 0.100 0.395 0.760 0.24
어떻게 선회 할
df
있도록col
값이 열이며,row
값은 지수의 평균이다val0
값이 있고, 누락 된 값은0
?col col0 col1 col2 col3 col4 row row0 0.77 0.605 0.000 0.860 0.65 row2 0.13 0.000 0.395 0.500 0.25 row3 0.00 0.310 0.000 0.545 0.00 row4 0.00 0.100 0.395 0.760 0.24
내가 아닌 다른받을 수
mean
어쩌면 등을sum
?col col0 col1 col2 col3 col4 row row0 0.77 1.21 0.00 0.86 0.65 row2 0.13 0.00 0.79 0.50 0.50 row3 0.00 0.31 0.00 1.09 0.00 row4 0.00 0.10 0.79 1.52 0.24
한 번에 하나 이상의 집계를 수행 할 수 있습니까?
sum mean col col0 col1 col2 col3 col4 col0 col1 col2 col3 col4 row row0 0.77 1.21 0.00 0.86 0.65 0.77 0.605 0.000 0.860 0.65 row2 0.13 0.00 0.79 0.50 0.50 0.13 0.000 0.395 0.500 0.25 row3 0.00 0.31 0.00 1.09 0.00 0.00 0.310 0.000 0.545 0.00 row4 0.00 0.10 0.79 1.52 0.24 0.00 0.100 0.395 0.760 0.24
여러 값 열을 집계 할 수 있습니까?
val0 val1 col col0 col1 col2 col3 col4 col0 col1 col2 col3 col4 row row0 0.77 0.605 0.000 0.860 0.65 0.01 0.745 0.00 0.010 0.02 row2 0.13 0.000 0.395 0.500 0.25 0.45 0.000 0.34 0.440 0.79 row3 0.00 0.310 0.000 0.545 0.00 0.00 0.230 0.00 0.075 0.00 row4 0.00 0.100 0.395 0.760 0.24 0.00 0.070 0.42 0.300 0.46
여러 열로 세분 할 수 있습니까?
item item0 item1 item2 col col2 col3 col4 col0 col1 col2 col3 col4 col0 col1 col3 col4 row row0 0.00 0.00 0.00 0.77 0.00 0.00 0.00 0.00 0.00 0.605 0.86 0.65 row2 0.35 0.00 0.37 0.00 0.00 0.44 0.00 0.00 0.13 0.000 0.50 0.13 row3 0.00 0.00 0.00 0.00 0.31 0.00 0.81 0.00 0.00 0.000 0.28 0.00 row4 0.15 0.64 0.00 0.00 0.10 0.64 0.88 0.24 0.00 0.000 0.00 0.00
또는
item item0 item1 item2 col col2 col3 col4 col0 col1 col2 col3 col4 col0 col1 col3 col4 key row key0 row0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.86 0.00 row2 0.00 0.00 0.37 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.50 0.00 row3 0.00 0.00 0.00 0.00 0.31 0.00 0.81 0.00 0.00 0.00 0.00 0.00 row4 0.15 0.64 0.00 0.00 0.00 0.00 0.00 0.24 0.00 0.00 0.00 0.00 key1 row0 0.00 0.00 0.00 0.77 0.00 0.00 0.00 0.00 0.00 0.81 0.00 0.65 row2 0.35 0.00 0.00 0.00 0.00 0.44 0.00 0.00 0.00 0.00 0.00 0.13 row3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.28 0.00 row4 0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 key2 row0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.40 0.00 0.00 row2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.13 0.00 0.00 0.00 row4 0.00 0.00 0.00 0.00 0.00 0.64 0.88 0.00 0.00 0.00 0.00 0.00
열과 행이 함께 발생하는 빈도를 일명 "교차 표"로 집계 할 수 있습니까?
col col0 col1 col2 col3 col4 row row0 1 2 0 1 1 row2 1 0 2 1 2 row3 0 1 0 2 0 row4 0 1 2 2 1
두 개의 열만 피벗하여 DataFrame을 long에서 wide로 변환하는 방법은 무엇입니까? 주어진,
np.random.seed([3, 1415]) df2 = pd.DataFrame({'A': list('aaaabbbc'), 'B': np.random.choice(15, 8)}) df2 A B 0 a 0 1 a 11 2 a 2 3 a 11 4 b 10 5 b 10 6 b 14 7 c 7
예상은 다음과 같습니다
a b c 0 0.0 10.0 7.0 1 11.0 10.0 NaN 2 2.0 14.0 NaN 3 11.0 NaN NaN
여러 인덱스를 단일 인덱스로 병합하는 방법
pivot
에서
1 2 1 1 2 a 2 1 1 b 2 1 0 c 1 0 0
에
1|1 2|1 2|2 a 2 1 1 b 2 1 0 c 1 0 0