취뽀 기록

#열심히 살자 #취업 #공부

기타/[하나로_수업]

5/25 판다스 기초

hyunnn_00 2023. 5. 25. 17:34
  • 데이터 분석 관련 필수 라이브러리
  1. 판다스 pandas오픈소스 = 무료코랩으로 실습하기 때문에 설치가 따로 필요없음업데이트 관련 질문이 나오면 y Y
  2. 설치 : pip install pandas
  3. 통계, 데이터 과학, 머신러닝 분야에서 중요하게 사용
  4. 2008년 금융 데이터 분석용으로 처음 개발
  5. 넘파이 numpy선형 대수 연산에 필요한 다차원 배열, 배열 연산 등
  6. 설치 : pip install numpy
  7. 숫자 해석 라이브러리
  8. 맷플롯립 matplotlib판다스와 연계하여 데이터를 다양한 방식으로 시각화
  9. 설치 : pip install matplotlib
  10. 기본 제공 시각화 도구
  11. 사이파이 scipy미적분, 행열 연산, 선형 대수, 방정식 계산 등의 함수 제공
  12. 설치 : pip install scipy
  13. 과학용 연산과 관련된 패키지 모음
  14. 사이킷런 scikit-learn회귀, 분류, 군집 등 대부분의 머신러닝 모형
  15. 설치 : pip install scikit-learn 시
  16. 머신러닝 학습을 위한 라이브러리
  17.  

시리즈

  • 데이터가 순차적으로 나열된 1차원 배열의 형태
  • 딕셔너리와 구조가 비슷함
  • 딕셔너리를 시리즈로 변환 많이 함
  • 판다스 내장함수 Series( ) 이용
    • 딕셔너리를 함수의 매개변수로 전달
    • 딕셔너리의 키 = 시리즈의 인덱스
    • 딕셔너리의 값 = 시리즈의 값(원소)
  • 시리즈 만들기
# 라이브러리 불러오기
import pandas as pd

# 딕셔너리 생성
test_dict = {
    'a' : 1,
    'b' : 2,
    'c' : 3
}
test_dict
------------------------------------------------------
{'a': 1, 'b': 2, 'c': 3}

# 딕셔너리를 시리즈로 변환
sr = pd.Series(test_dict)
print(sr)
# 시리즈의 값은 정수 int
------------------------------------------------------
a    1
b    2
c    3
dtype: int64

# 시리즈 객체 확인
print(type(sr))
------------------------------------------------------
<class 'pandas.core.series.Series'>
  • 인덱스 구조
    • 원소의 순서와 주소를 저장
    • 인덱스를 이용하여 데이터 값의 탐색, 정렬, 선택, 결합 등 데이터 조작 쉽게 가능
    • 정수형 인덱스 ex) df[3], 제로인덱스 사용
    • 인덱스 이름 및 라벨 ex) df[’이름’]
    # 이름 = 인덱스 이름 / 라벨
    test_dict = {
        'a' : 1,
        'b' : 2,
        'c' : 3
    }
    sr = pd.Series(test_dict)
    
    # 인덱스 확인
    print(sr.index)
    
    # 데이터 타입이 object = 문자
    # 인덱스 이름 = a, b, c
    ------------------------------------------------------
    Index(['a', 'b', 'c'], dtype='object')
    
    # 값 확인
    print(sr.values)
    
    # 딕셔너리의 키 => 인덱스 이름
    # 딕셔너리의 값 => 값 = 숫자 int
    ------------------------------------------------------
    [1 2 3]
    
    # 숫자 = 정수형 위치 인덱스
    # 리스트 생성
    # 기본자료형 = 문자열, 숫자, 불
    test_list = ["Hello", 23, 3.14, True]
    print(test_list)
    ------------------------------------------------------
    ['Hello', 23, 3.14, True]
    
    # 리스트를 시리즈로 변환
    sr = pd.Series(test_list)
    print(sr)
    ------------------------------------------------------
    0    Hello
    1       23
    2     3.14
    3     True
    dtype: object
    
    # 인덱스 확인
    print(sr.index)
    
    # 값 확인
    print(sr.values)
    
    # 리스트의 인덱스 => 인덱스 숫자
    # 리스트의 요소 => 깂 = 기본자료형
    ------------------------------------------------------
    RangeIndex(start=0, stop=4, step=1)
    ['Hello' 23 3.14 True]
    
    • 원소 선택
    # 인덱스 사용
    # 튜플 생성
    # 리스트와 유사
    # 차이점 : 소괄호 사용, 원소(개별 값) 변경 불가
    # 기본자료형
    test_tuple = ("정대만", 184, 73.5, True)
    print(test_tuple)
    ------------------------------------------------------
    ('정대만', 184, 73.5, True)
    
    # 튜플을 시리즈로 변환
    sr = pd.Series(test_tuple, index = ['이름', '키', '체중', '불꽃남자'])
    print(sr)
    ------------------------------------------------------
    이름       정대만
    키        184
    체중      73.5
    불꽃남자    True
    dtype: object
    
    # 하나의 원소 선택
    # 숫자
    print(sr[0]) # 이름
    print(sr[1]) # 키
    print(sr[2]) # 체중
    print(sr[3]) # 불꽃남자
    ------------------------------------------------------
    정대만
    184
    73.5
    True
    
    # 이름
    print(sr['이름']) # 이름
    print(sr['키']) # 키
    print(sr['체중']) # 체중
    print(sr['불꽃남자']) # 불꽃남자
    ------------------------------------------------------
    정대만
    184
    73.5
    True
    
    # 여러 개의 원소 선택
    # 숫자
    print(sr[[0, 3]]) # 이름, 불꽃남자
    print(sr[[1, 3]]) # 키, 불꽃남자
    
    # 이름
    print(sr[['이름', '체중']]) # 이름, 체중
    print(sr[['키','불꽃남자']]) # 키, 불꽃남자
    ------------------------------------------------------
    이름       정대만
    불꽃남자    True
    dtype: object
    키        184
    불꽃남자    True
    dtype: object
    이름     정대만
    체중    73.5
    dtype: object
    키        184
    불꽃남자    True
    dtype: object
    
    # 범위를 지정하여 여러 개의 원소 선택 = 슬라이싱
    # 숫자 = 끝 번호를 포함하지 않음
    print(sr[0 : 2]) # 이름, 키
    print(sr[0 : 1+1]) # 이름, 키
    print(sr[1 : 2]) # 키, 체중, 불꽃남자
    print(sr[1 : 3+1]) # 키, 체중, 불꽃남자
    
    # 이름
    print(sr['이름' : '키']) # 이름, 키
    print(sr['키' : '불꽃남자']) # 키, 체중, 불꽃남자
    ------------------------------------------------------
    이름    정대만
    키     184
    dtype: object
    이름    정대만
    키     184
    dtype: object
    키    184
    dtype: object
    키        184
    체중      73.5
    불꽃남자    True
    dtype: object
    이름    정대만
    키     184
    dtype: object
    키        184
    체중      73.5
    불꽃남자    True
    dtype: object
    

 

데이터프레임

  • 2차원 배열의 형태(행과 열로 구성)
  • 행은 개별 관측 대상에 대한 다양한 속성 데이터들의 모임 ⇒ 레코드. 케이스 등
  • 열은 공통의 속성을 갖는 일련의 데이터
    • 하나의 열은 시리즈 객체 = 열 벡터
    • 데이터 프레임은 여러 개의 행과 열을 가질 수 있는 2차원 벡터 = 행렬
  • 인덱스의 종류
    • 행 인덱스, 열 이름
  • 데이터프레임 만들기
    • 같은 길이의 여러 개의 열(시리즈) 집합
    • 여러 개의 리스트를 가지는 딕셔너리를 함수에 전달
    # 라이브러리 불러오기
    import pandas as pd
    
    # 딕셔너리 = 키 & 여러 개의 값(리스트 형태)
    test_dict = {
        'c1' : [1, 2, 3],
        'c2' : [4, 5, 6],
        'c3' : [7, 8, 9],
        'c4' : [10, 11, 12]
    }
    print(test_dict)
    ------------------------------------------------------
    {'c1': [1, 2, 3], 'c2': [4, 5, 6], 'c3': [7, 8, 9], 'c4': [10, 11, 12]}
    
    # 딕셔너리를 데이터프레임으로 변환
    df = pd.DataFrame(test_dict)
    print(df)
    print(type(df))
    # 딕셔너리의 키 = 데이터프레임의 열 이름
    # 딕셔너리의 값 = 데이터프레임의 열 값
    # 딕셔너리의 값 = 리스트의 요소 개수 = 행 인덱스
    ------------------------------------------------------
    c1  c2  c3  c4
    0   1   4   7  10
    1   2   5   8  11
    2   3   6   9  12
    <class 'pandas.core.frame.DataFrame'>
    

 

  • 행 인덱스 / 열 이름 설정
    • 사용자가 지정 가능
    • rename 메소드를 이용하면 행 인덱스 / 열 이름 일부 선택하여 변경 가능
    # 행 인덱스와 열 이름 설정하여 데이터프레임 생성
    df = pd.DataFrame([['정대만', 19, 184],
                       ['서태웅', 17, 187]],
                       index = ['선수1', '선수2'], # 행 인덱스
                       columns = ['이름', '나이', '키']) # 열 이름
    print(df)
    ------------------------------------------------------
    이름  나이    키
    선수1  정대만  19  184
    선수2  서태웅  17  187
    
    # 행 인덱스 확인
    print(df.index)
    
    # 열 이름 확인
    print(df.columns)
    ------------------------------------------------------
    Index(['선수1', '선수2'], dtype='object')
    Index(['이름', '나이', '키'], dtype='object')
    
    # 행 인덱스, 열 이름 => 이름 변경
    df.index = ['학생1', '학생2']
    df.columns = ['성명', '연령', '신장']
    print(df)
    ------------------------------------------------------
    성명  연령   신장
    학생1  정대만  19  184
    학생2  서태웅  17  187
    
    # 메소드 함수 = 클래스 안에 있는 함수
    # 행 인덱스, 열 이름 => 이름 변경
    # rename 메소드 함수의 반환값은 새로운 데이터프레임
    df_new = df.rename(index = {'학생1' : '선수1', '학생2' : '선수2'}) # 데이터 프레임
    print(df)
    print(df_new)
    ------------------------------------------------------
    성명  연령   신장
    학생1  정대만  19  184
    학생2  서태웅  17  187
          성명  연령   신장
    선수1  정대만  19  184
    선수2  서태웅  17  187
    
    # 원본을 바로 변경
    print(df) # 변경 전
    df.rename(index = {'학생1' : '선수1', '학생2' : '선수2'}, inplace = True)
    print(df) # 변경 후
    ------------------------------------------------------
    			성명  연령   신장
    학생1  정대만  19  184
    학생2  서태웅  17  187
          성명  연령   신장
    선수1  정대만  19  184
    선수2  서태웅  17  187
    

 

  • 행/열 삭제
    • drop메소드에서
      • 행 삭제 : axis = 0
      • 열 삭제 : axis = 1
    # drop 메소드 함수 반환 결과는 새로운 데이터프레임
    score_dict = {
        'point3' : [24, 3, 9],
        'point2' : [6, 4, 18],
        'ft' : [3, 1, 6]
    }
    print(score_dict)
    ------------------------------------------------------
    {'point3': [24, 3, 9], 'point2': [6, 4, 18], 'ft': [3, 1, 6]}
    
    df = pd.DataFrame(score_dict, index = ['정대만', '강백호', '서태웅'])
    print(df)
    ------------------------------------------------------
    point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
    
    df1 = df[:]
    print(df1)
    ------------------------------------------------------
    point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
    
    # drop 메소드 함수 반환 결과는 새로운 데이터프레임
    print(df1) # 변경 전
    df1 = df1.drop('강백호', axis = 0)
    print(df1) # 변경 후 = df1
    ------------------------------------------------------
    		point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
         point3  point2  ft
    정대만      24       6   3
    서태웅       9      18   6
    
    # 사본 저장
    df1 = df[:]
    # 열 삭제 = axis = 1
    print(df1) # 변경 전
    df2 = df1.drop('ft', axis = 1)
    print(df2) # 변경 후 = 새로운 데이터프레임
    print(df1) # 변경 전
    df1.drop('ft', axis = 1, inplace = True)
    print(df1) # 변경 후 = df1
    # inplace = True를 지정하면 원본이 바뀜
    # 그렇지 않으면 사본 생성됨
    ------------------------------------------------------
    				point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
    		     point3  point2
    정대만      24       6
    강백호       3       4
    서태웅       9      18
    		     point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
    		     point3  point2
    정대만      24       6
    강백호       3       4
    서태웅       9      18
    

 

  • 행 선택
    • loc 인덱스 이름으로 행 선택
    • iloc 정수형 위치 인덱스 사용
    # loc 인덱서 = 이름
    print(df.loc['정대만']) # 시리즈 
    print(df.loc[['정대만']]) # 데이터프레임
    ------------------------------------------------------
    point3    24
    point2     6
    ft         3
    Name: 정대만, dtype: int64
         point3  point2  ft
    정대만      24       6   3
    
    # loc 인덱서 = 숫자
    print(df.iloc[0]) # 시리즈 
    print(df.iloc[[0]]) # 데이터프레임
    ------------------------------------------------------
    point3    24
    point2     6
    ft         3
    Name: 정대만, dtype: int64
         point3  point2  ft
    정대만      24       6   3
    
    # 여러 개의 행 선택
    print(df.loc[['정대만', '서태웅']]) # 데이터프레임
    print(df.iloc[[0, 2]]) # 데이터프레임
    ------------------------------------------------------
    point3  point2  ft
    정대만      24       6   3
    서태웅       9      18   6
         point3  point2  ft
    정대만      24       6   3
    서태웅       9      18   6
    
    # 여러 개의 행 선택
    print(df.loc['정대만' : '서태웅']) # 데이터프레임
    print(df.iloc[0 : 2]) # 데이터프레임
    print(df.iloc[0 : 1 + 1]) # 데이터프레임
    ------------------------------------------------------
    point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
         point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
         point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    

 

  • 열 선택
    • df[’수학’]
    • df.영어
    • df[[’음악’, ‘체육’]]
    # 열 선택하는 방법 3가지
    # 열 하나 선택
    print(df['point3']) # 시리즈
    print(df[['point3']]) # 데이터프레임
    print(df.point3) # 시리즈
    
    # 여러 개의 열 선택
    print(df[['point3', 'ft']]) # 데이터프레임
    ------------------------------------------------------
    정대만    24
    강백호     3
    서태웅     9
    Name: point3, dtype: int64
         point3
    정대만      24
    강백호       3
    서태웅       9
    정대만    24
    강백호     3
    서태웅     9
    Name: point3, dtype: int64
         point3  ft
    정대만      24   3
    강백호       3   1
    서태웅       9   6
    

 

  • 원소 선택
    • 인덱서 loc나 iloc 이용하여 행, 열 인덱스 입력
    # 행과 열을 동시에 선택
    print(df.loc['정대만', 'point3'])
    print(df.iloc[0, 0])
    ------------------------------------------------------
    24
    24
    
    # 여러 개의 행과 하나의 열 선택
    print(df.loc[['정대만', '서태웅'], 'point2'])
    print(df.iloc[[0, 2], 1])
    ------------------------------------------------------
    정대만     6
    서태웅    18
    Name: point2, dtype: int64
    정대만     6
    서태웅    18
    Name: point2, dtype: int64
    
    # 하나의 행과 여러 개의 열 선택
    print(df.loc['정대만',['point3', 'ft']])
    print(df.iloc[0, [0, 2]])
    ------------------------------------------------------
    point3    24
    ft         3
    Name: 정대만, dtype: int64
    point3    24
    ft         3
    Name: 정대만, dtype: int64
    
    # 여러 개의 행과 여러 개의 열 선택
    print(df.loc[['정대만', '서태웅'],['point3', 'ft']])
    print(df.iloc[[0, 2], [0, 2]])
    ------------------------------------------------------
    point3  ft
    정대만      24   3
    서태웅       9   6
         point3  ft
    정대만      24   3
    서태웅       9   6
    
    # 여러 개의 행과 여러 개의 열 선택(슬라이싱)
    print(df.loc['정대만': '서태웅','point3' : 'ft'])
    print(df.iloc[0 : 3, 0 : 3])
    print(df.iloc[0 : 2+1, 0 : 2+1])
    ------------------------------------------------------
    point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
         point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
         point3  point2  ft
    정대만      24       6   3
    강백호       3       4   1
    서태웅       9      18   6
    
  • 열 추가
# 다른 값을 가진 열 추가 = 리스트 형태
df['rebound'] = [1, 10, 5]
print(df)
------------------------------------------------------
point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5

 

  • 행 추가
# 다른 값을 가진 행 추가 = 리스트 형태
df.loc['송태섭'] = [9, 10, 6, 3, 0]
print(df)
------------------------------------------------------
point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5
채치수       0       0   0     0        0
송태섭       9      10   6     3        0

 

  • 원소값 변경
# 하나의 행과 하나의 열을 선택하여 값 변경
df.loc['채치수', 'rebound'] = 5
print(df)

df.iloc[4, 4] = 1
print(df)
------------------------------------------------------
					point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5
채치수       0       0   0     0        5
송태섭       9      10   6     3        0
		     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5
채치수       0       0   0     0        5
송태섭       9      10   6     3        1

# 하나의 행과 여러 개의 열을 선택하여 값 변경
df.loc['채치수', ['point2', 'foul']] = 2
print(df)

df.iloc[3, [1, 3]] = 4
print(df)
------------------------------------------------------
					point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5
채치수       0       2   0     2        5
송태섭       0       0   6     3        1
		     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     2       10
서태웅       9      18   6     2        5
채치수       0       4   0     4        5
송태섭       0       0   6     3        1

# 여러 개의 행과 하나의 열을 선택하여 값 변경
df.loc[['강백호', '채치수'], 'rebound'] = 4
print(df)

df.iloc[[1, 3], 4] = 3
print(df)
------------------------------------------------------
					point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        4
서태웅       9      18   1     1        1
채치수       6       4   1     4        4
송태섭       6       6   6     3        1
		     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        3
서태웅       9      18   1     1        1
채치수       6       4   1     4        3
송태섭       6       6   6     3        1

# 여러 개의 행과 여러 개의 열을 선택하여 값을 변경
df.loc[['채치수', '송태섭'], ['point3', 'point2']] = 0
print(df)

df.iloc[[3, 4], [0, 1]] = 6
print(df)
------------------------------------------------------
					point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        1
서태웅       9      18   1     1        1
채치수       6       6   1     1        1
송태섭       6       6   6     3        1

df.iloc[1:4, 2:5] = 1
print(df)
------------------------------------------------------
					point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        1
서태웅       9      18   1     1        1
채치수       6       6   1     1        1
송태섭       6       6   6     3        1

# 다른 값으로 변경
# 하나의 행과 여러 개의 열을 선택하여 값 변경
df.loc['채치수', ['point2', 'foul']] = [10, 4]
print(df)

# 대괄호 소괄호 생략해서 한 번에 할당
df.loc['채치수', ['point2', 'foul']] = 2, 1
print(df)

df.iloc[3, [1, 3]] = [4, 3]
print(df)
------------------------------------------------------
point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        1
서태웅       9      18   1     1        1
채치수       6      10   1     4        1
송태섭       6       6   6     3        1
     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        1
서태웅       9      18   1     1        1
채치수       6       2   1     1        1
송태섭       6       6   6     3        1
     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1        1
서태웅       9      18   1     1        1
채치수       6       4   1     3        1
송태섭       6       6   6     3        1

# 여러 개의 행과 하나의 열을 선택하여 값 변경
df.loc[['강백호', '채치수'], 'rebound'] = [10, 5]
print(df)

df.iloc[[1, 3], 4] = [12, 7]
print(df)
------------------------------------------------------
		point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1       10
서태웅       9      18   1     1        1
채치수       6       4   1     4        5
송태섭       6       6   6     3        1
     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1       12
서태웅       9      18   1     1        1
채치수       6       4   1     4        7
송태섭       6       6   6     3        1

# 여러 개의 행과 여러 개의 열을 선택하여 값을 변경
df.loc[['채치수', '송태섭'], ['point3', 'point2']] = [[0, 8], [9, 8]]
print(df)

df.iloc[[3, 4], [0, 1]] = [[1, 4], [3, 2]]
print(df)
------------------------------------------------------
point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1       12
서태웅       9      18   1     1        1
채치수       0       8   1     4        7
송태섭       9       8   6     3        1
     point3  point2  ft  foul  rebound
정대만      24       6   3     2        1
강백호       3       4   1     1       12
서태웅       9      18   1     1        1
채치수       1       4   1     4        7
송태섭       3       2   6     3        1

 

  • 행과 열 위치 바꾸기
print(df.T)
------------------------------------------------------
정대만  강백호  서태웅  채치수  송태섭
point3    24    3    9    1    3
point2     6    4   18    4    2
ft         3    1    1    1    6
foul       2    1    1    4    3
rebound    1   12    1    7    1

print(df.transpose())
------------------------------------------------------
정대만  강백호  서태웅  채치수  송태섭
point3    24    3    9    1    3
point2     6    4   18    4    2
ft         3    1    1    1    6
foul       2    1    1    4    3
rebound    1   12    1    7    1

 

  • 인덱스 활용
    • 특정 열을 행 인덱스로 설정
      • set_index
    print(df)
    df_new = df.set_index('이름')
    print('--------------------------')
    print(df_new)
    ------------------------------------------------------
    이름    키  나이  득점
    0  정대만  184  19  28
    1  강백호  189  17   1
    2  채치수  193  19  20
    --------------------------
           키  나이  득점
    이름              
    정대만  184  19  28
    강백호  189  17   1
    채치수  193  19  20
    
    • 행 인덱스 재배열
      • reindex
    print(df)
    df_new = df.set_index('이름')
    print('--------------------------')
    print(df_new)
    # 원래 행 인덱스(정수)가 없어지고 이름 열이 행 인덱스가 됨
    ------------------------------------------------------
    이름    키  나이  득점
    0  정대만  184  19  28
    1  강백호  189  17   1
    2  채치수  193  19  20
    --------------------------
           키  나이  득점
    이름              
    정대만  184  19  28
    강백호  189  17   1
    채치수  193  19  20
    
    print(df_new)
    df_new2 = df.set_index('키')
    print('--------------------------')
    print(df_new2)
    # 키 열이 행 인덱스가 되고, 행 인덱스였던 이름 열이 다시 열로 돌아옴
    ------------------------------------------------------
    키  나이  득점
    이름              
    정대만  184  19  28
    강백호  189  17   1
    채치수  193  19  20
    --------------------------
          이름  나이  득점
    키               
    184  정대만  19  28
    189  강백호  17   1
    193  채치수  19  20
    
    # 여러 개의 열을 행 인덱스로 설정
    print(df)
    df_new = df.set_index(['이름', '키'])
    print('--------------------------')
    print(df_new)
    ------------------------------------------------------
    이름    키  나이  득점
    0  정대만  184  19  28
    1  강백호  189  17   1
    2  채치수  193  19  20
    --------------------------
             나이  득점
    이름  키          
    정대만 184  19  28
    강백호 189  17   1
    채치수 193  19  20
    

'기타 > [하나로_수업]' 카테고리의 다른 글

5/23  (0) 2023.05.23
5/22  (0) 2023.05.22
5/19  (1) 2023.05.22
5/16  (0) 2023.05.16
5/15  (0) 2023.05.15