Python

[Python] 판다스(Pandas) : 데이터 프레임(DataFrame) 사용법 정리

Let it out 2024. 2. 10. 22:47

Pandas import

Pandas 패키지를 설치하고 pd 라는 이름으로 import 해주는 것이 관례다.
import pandas as pd

 

데이터 프레임(Data Frame)

 
시리즈가 1차원 데이터 라면 데이터 프레임은 2차원 데이터 행과 열을 가지게 되는 데이터 구조다.
 
시리즈값, 인덱스로 구성 되었다면, 데이터 프레임값, 인덱스, 열(columns)로 구성된다.
 
 
 

데이터 프레임 생성

값, 인덱스, 열 세개의 구성 요소를 넣고 데이터 프레임을 생성해 보자.
 
3 x 3인 2차원 데이터가 만들어진다.
 
index  이 되고, columns 이된다.
import pandas as pd

values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ['1행', '2행', '3행']
columns = ['1열', '2열', '3열']

df = pd.DataFrame(values, index=index, columns=columns)

print(df)
<결과>
       1열  2열  3열
1행   1   2   3
2행   4   5   6
3행   7   8   9
 
 
 

값, 인덱스, 열 출력

값, 인덱스, 열은 다음과 같이 출력 가능하다.
print("값 : \n", df.values)
print("인덱스(행): ", df.index)
print("열 : ", df.columns)
<결과>
값 : 
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
인덱스(행):  Index(['1행', '2행', '3행'], dtype='object')
열 :  Index(['1열', '2열', '3열'], dtype='object')
 
 

리스트로 데이터 프레임 생성  

리스트로 데이터 프레임을 생성 예제다.
 
2차원 데이터만 넘겨주고, 인덱스와 열의 이름을 지정하지 않아 이름이 숫자로 채워진다.
import pandas as pd

data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]

df = pd.DataFrame(data)

print(df)
<결과>
    0  1  2
0  1  2  3
1  4  5  6
2  7  8  9
 
 
 

인덱스 지정 해주기

index(행) 의 이름을 지정해주는 예제다.

import pandas as pd

data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]

index = ['1행','2행','3행']
df = pd.DataFrame(data, index=index)

print(df)
<결과>
        0  1  2
1행  1  2  3
2행  4  5  6
3행  7  8  9
 
 
 

열 지정 해주기 

columns(열) 의 이름을 지정해 주는 예제다.

import pandas as pd

data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]

index = ['1행','2행','3행']
columns = ['1열','2열','3열']

df = pd.DataFrame(data, index=index, columns=columns)

print(df)
<결과>
     1열  2열  3열
1행   1   2   3
2행   4   5   6
3행   7   8   9
 
 
 

딕셔너리로 데이터 프레임 생성 

딕셔너리로 데이터 프레임 생성이 가능하다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df)
<결과>
       1열  2열  3열
1행   1   4   7
2행   2   5   8
3행   3   6   9
 
 
 

df.head()

head() 메서드는 처음 부터 n개 까지 조회한다.
 
주의 할 점은 n의 시작 1부터다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df.head(2))
<결과>
       1열  2열  3열
1행   1   4   7
2행   2   5   8
 
 
 

df.tail()

tail() 메서드는 head() 와 다르게 뒤 에서부터 n개를 출력한다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df.tail(2))
<결과>
    1열  2열  3열
2행   2   5   8
3행   3   6   9
 
 
 

열 조회하기

보고 싶은 열의 이름을 적으면 해당 열을 출력한다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df['2열'])
<결과>
1행    4
2행    5
3행    6
 
 
 

열의 특정 값 조회하기 

loc 속성을 사용해 행의 시퀀스와 조회하고 싶은 열을 적어주면 된다.
 
예제에서는 2번째 행, 2번째 열을 조회한다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

df = pd.DataFrame(data)

print(df.loc[1,'2열'])
<결과>
5
 
 

행 조회하기 

인덱스 접근에는 명시적 인덱스 접근, 암시적 인덱스 접근이 있다.
 
명시적 인덱스 접근은 인덱스(행)의 이름을 적어주고,
 
암시적 인덱스 접근 은 인덱스(행)의 시퀀스를 적어준다.
 
 

명시적 인덱스 접근

loc 속성을 사용해 index의 이름으로 조회한다.
 
시퀀스를 적으면 에러가 발생한다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df.loc['2행'])
<결과>
1열    2
2열    5
3열    8
Name: 2행, dtype: int64
 
 
 

암시적 인덱스 접근

명시적 접근과 반대로 인덱스에 주어진 이름 대신 시퀀스(숫자)를 적는다.
 
이때 iloc 속성을 사용해준다.
 
예제에서 1행, 2행, 3행은 각각 암시적으로 0, 1, 2 로 볼 수 있다.
import pandas as pd

data = {
        '1열' : [1, 2, 3],
        '2열' : [4, 5, 6],
        '3열' : [7, 8, 9]
        }

index = ['1행','2행','3행']

df = pd.DataFrame(data, index=index)

print(df.iloc[1])
<결과>
1열    2
2열    5
3열    8
Name: 2행, dtype: int64
반응형