파이썬 판다스(Pandas) 데이터 구조

2 minute read

파이썬 Pandas 라이브러리에 대해 정리합니다. 판다스는 파이썬 데이터 처리를 위한 라이브러리이다.

Pandas 데이터 구조

Pandas는 총 세 가지의 데이터 구조를 사용합니다.

  • 시리즈(Series)
  • 데이터프레임(DataFrame)
  • 패널(Panel) / 추후 업로드

1. 시리즈

시리즈 클래스는 1차원 배열의 값에 각 값에 대응되는 인덱스를 부여할 수 있는 구조를 갖고 있다.

import pandas as pd
sr = pd.Series([17000, 18000, 1000, 5000], index=["피자", "치킨", "콜라", "맥주"])
print(sr)
print(f"시리즈의 값 : {sr.values}")
print(f"시리즈의 인덱스 : {sr.index}")
피자    17000
치킨    18000
콜라     1000
맥주     5000
dtype: int64
시리즈의 값 : [17000 18000  1000  5000]
시리즈의 인덱스 : Index(['피자', '치킨', '콜라', '맥주'], dtype='object')

2. 데이터프레임

데이터프레임은 2차원 리스트를 매개변수로 전달한다. 2차원이므로 행뱡향 인덱스(index)와 열방향 인덱스(column)가 존재한다.
다시 말해, 행과 열을 가지는 자료구조이다.

values = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
index = ["one", "two", "three"]
columns = ["A", "B", "C"]
df = pd.DataFrame(values, index=index, columns=columns)
print(df)
       A  B  C
one    1  2  3
two    4  5  6
three  7  8  9

1) 데이터프레임의 생성

데이터프레임은 리스트, 시리즈, 딕셔너리, Numpy의 ndarrays, 또 다른 데이터프레임으로부터 생성할 수 있다.

# 리스트로 생성하기
data = [
    ["1000", "Steve", 90.72], 
    ["1001", "James", 78.09], 
    ["1002", "Doyeon", 98.43], 
    ["1003", "Jane", 64.19], 
    ["1004", "Pilwoong", 81.30],
    ["1005", "Tony", 99.14],
]

df = pd.DataFrame(data)
print(df)
      0         1      2
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

열 이름 지정

df = pd.DataFrame(data, columns=["학번", "이름", "점수"])
print(df)
     학번        이름     점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

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

data = {
    "학번" : ["1000", "1001", "1002", "1003", "1004", "1005"],
    "이름" : ["Steve", "James", "Doyeon", "Jane", "Pilwoong", "Tony"],
    "점수" : [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
}
df_dict = pd.DataFrame(data)
print(df_dict)
     학번        이름     점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

2) 데이터프레임 조회

# 앞 부분을 3개만 보기
print(df.head(3))
     학번      이름     점수
0  1000   Steve  90.72
1  1001   James  78.09
2  1002  Doyeon  98.43
# 뒷 부분을 3개만 보기
print(df.tail(3))
     학번        이름     점수
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14
# 열 조회
print(df["학번"])
0    1000
1    1001
2    1002
3    1003
4    1004
5    1005
Name: 학번, dtype: object

3) 외부 데이터 읽기

Pandas는 CSV, 텍스트, Excel, SQL, HTML, JSON 등 다양한 데이터 파일을 읽고 데이터 프레임을 생성할 수 있다.

df = pd.read_csv("dataframe.csv")
print(df)
   student id name  score
0           1   aa     10
1           2   bb     20
2           3   cc     30
3           4   dd     40

이 경우 인덱스가 자동으로 부여된다.

print(df.index)
RangeIndex(start=0, stop=4, step=1)

Comments