Appia의 IT세상

파이썬[Python] Pandas, Reindex - Row/Column Label(Index)구조 및 이름 변경하기 본문

Python/Python Pandas

파이썬[Python] Pandas, Reindex - Row/Column Label(Index)구조 및 이름 변경하기

Appia 2020. 3. 29. 07:04
반응형

이번 포스팅에서는 Pandas에서 자주 사용하는 Reindex에서 대해서 살펴보고자 합니다. Reindex는 가장 쉽게 Row/Column의 Label 값을 변경하는 데 가장 많이 사용됩니다. 하지만, 이 외에도 다른 DataFrame의 구조에 맞게 변경 시킨는 방법등에도 사용이 됩니다. 

 

그래서 이 Reindex에 대해서 간단히 예제를 통해서 어떻게 사용되는 지 살펴보겠습니다. 

 

먼저, Column과 Index의 구조를 바꾸는 방법으로 Reindex를 사용합니다. 그럼 먼저 다음 예시를 한번 살펴보겠습니다. 

example) 

import pandas as pd
 
# Series 생성
 
ds = {'Name': pd.Series(['Choi''Lee''Lee''Choi','Kim']),
 
      'Age': pd.Series([2926252527]),
 
      'Rating': pd.Series([2.563.204.63.24.1])}
 
# DataFrame 생성
 
df = pd.DataFrame(ds)
 
print(df)
 
df_rein = df.reindex(index = [0,2,4], columns=['Age','Name',"Grade"])
 
print("Reindex : ")
 
print(df_rein)
cs

result) 

   Name  Age  Rating
 
0  Choi   29    2.56
 
1   Lee   26    3.20
 
2   Lee   25    4.60
 
3  Choi   25    3.20
 
4   Kim   27    4.10
 
Reindex : 
 
   Age  Name  Grade
 
0   29  Choi    NaN
 
2   25   Lee    NaN
 
4   27   Kim    NaN
cs

먼저 위의 값을 원래 DataFrame이고, "Reindex"는 reindex를 통해서 변환이 된것입니다. 기존에 Age와 Name의 위치가 바뀌었습니다. 여기에 제가 새로운 Column Label인 Grade를 입력했는데, 이 부분은 기존 데이터 값에서 존재하지 않았기 때문에 NaN 표시로 됩니다. 

 

그럼 이번에는 다른 Data Frame의 구조에 맞게 기존 DataFrame의 형태를 바꾸는 방법에 대한 reindex를 살펴보도록 하겠습니다. 이런 방식으로 사용하실 경우에는 reindex_like()명령어를 사용하시면 됩니다. 

example) 

import pandas as pd
 
import numpy as np
 
df1 = pd.DataFrame(np.random.randn(10,3),columns=['n1','n2','n3'])
 
df2 = pd.DataFrame(np.random.randn(7,3),columns=['n1','n3','n2'])
 
print(df1)
 
print("reindex :")
 
print (df1.reindex_like(df2))
cs

result) 

         n1        n2        n3
         
0  0.427736 -1.024115 -0.898372
 
1 -0.758645  0.602594 -0.615543
 
2 -0.897615 -1.391808 -1.997425
 
3  0.675451  0.949994  1.404764
 
4 -0.056839  1.359540  0.453744
 
5 -1.784381 -1.682699  0.971313
 
6 -2.251771  1.668413 -1.558727
 
7 -1.051493  0.496562  0.060498
 
8  0.597071 -0.197669  2.338056
 
9 -0.180875  0.705909  1.018296
 
reindex :
 
         n1        n3        n2
         
0  0.427736 -0.898372 -1.024115
 
1 -0.758645 -0.615543  0.602594
 
2 -0.897615 -1.997425 -1.391808
 
3  0.675451  1.404764  0.949994
 
4 -0.056839  0.453744  1.359540
 
5 -1.784381  0.971313 -1.682699
 
6 -2.251771 -1.558727  1.668413
cs

위의 결과를 한번 살펴보시면, reindex_like()를 통해서 column위치를 바꾸거나, 아니면, row를 인자로 받은 DataFrame의 구조에 맞게 변경할 수 있습니다. 

 

그럼 이번에는 column/row의 label의 이름을 변경하는 방법에 대해서 살펴보겠습니다. 

 

example)

import pandas as pd
 
import numpy as np
 
df1 = pd.DataFrame(np.random.randn(4,3),columns=['n1','n2','n3'])
 
print (df1)
 
print("Rename : ")
 
print (df1.rename(columns={'n1' : 'c1''n2' : 'c2'},
                  index = {0 : 'kim'1 : 'Choi'2 : 'appia'}))
cs

result) 

         n1        n2        n3
         
0 -0.283707  0.064716 -0.481464
 
1 -0.965434 -0.521220 -0.917547
 
2 -0.481276  0.909804  1.070735
 
3 -1.653430 -0.290770  0.118492
 
Rename : 
 
             c1        c2        n3
             
kim   -0.283707  0.064716 -0.481464
 
Choi  -0.965434 -0.521220 -0.917547
 
appia -0.481276  0.909804  1.070735
 
3     -1.653430 -0.290770  0.118492
cs

 

위에서 보는 바와같이 rename을 이용해서 Column/Row의 Label이름을 변경해봤습니다. 

 

이번 포스팅에서는 reindex를 이용해서, DataFrame의 구조를 변경하거나, Row/Column의 label을 변경하는 방법에 대해서 살펴봤습니다. 도움이 되시길 바랍니다. 혹 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

 

반응형
Comments