데이터 분석 삼대장 - (1) Pandas

판다스(Pandas), 넘파이(Numpy), 맷폴롭립(Matplotlib)
- 데이터 처리 삼대장

데이터 분석을 위한 필수 패키지 삼대장! 그 첫번째인 판다스에 대해서 포스팅을 하려고 한다.

1. 판다스 (Pandas)

판다스는 파이썬 데이터 처리를 위한 라이브러리다. 파이썬을 이용한 데이터 분석에서는 필수 라이브러리다!

아나콘다를 설치했다면 기본으로 깔려있겠지만, 설치하지 않았다면 아래 커맨드로 Pandas를 설치할 수 있다.

1
pip install pandas

판다스의 경우, 주로 pd라는 명칭으로 임포트 하는 것이 관례이다.

1
import pandas as pd

이하 아래에서 수행되는 모든 pandas 코드들은 위의 임포트 코드를 우선 수행했다고 가정한다.

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

  1. 시리즈 (Series)
  2. 데이터프레임 (DataFrame)
  3. 패널(Panel)

이 중 데이터 프레임이 가장 많이 사용된다. 이 포스팅에는 시리즈와 데이터 프레임에 대해서만 다룰 예정이다!

1. 시리즈 (Series)

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

1
2
3
sr = pd.Series([17000, 18000, 1000, 5000],
    index = ['피자', '치킨', '콜라', '맥주'])
print(sr)
1
2
3
4
5
피자    17000
치킨    18000
콜라    1000
맥주    5000
dtype: int64
1
print(sr.values)
1
[17000 18000 1000 5000]
1
print(sr.index)
1
Index(['피자', '치킨', '콜라', '맥주'], dtype='object')

2. 데이터프레임(DataFrame)

데이터프레임은 2차원 리스트를 매개변수로 전달한다. 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)가 존재한다. 즉, 행과 열을 가지는 자료구조다. 시리즈가 인덱스(index)와 값(values)으로 구성된다면 데이터프레임은 열(columns)까지 추가되어 열(columns), 인덱스(index), 값(values)으로 구성된다.

예제를 통해 데이터프레임의 구성을 이해해보자.

1
2
3
4
5
6
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)
1
2
3
4
		A	B	C
one		1	2	3
two		4	5	6
three	7	8	9

생성된 데이터프레임으로부터 인덱스, 값, 열을 각각 출력해보자.

1
print(df.index)
1
Index(['one', 'two', 'three'], dtype='object')
1
print(df.columns)
1
Index(['A', 'B', 'C'], dtype='object')
1
print(df.values)
1
2
3
[[1 2 3]
 [4 5 6]
 [7 8 9]]

(1) 데이터 프레임의 생성

데이터프레임은 리스트(list), 시리즈(Seriex), 딕셔너리(dict), Numpy의 ndarrays, 또 다른 데이터프레임으로 생성할 수 있다. 여기서는 리스트와 딕셔너리를 통해서 데이터프레임을 생성해보자.

1
2
3
4
5
6
7
8
#리스트로 생성하기
data = [
	['1000', 'Steve', 90.72],
    ['1001', 'James', 78.09],
    ['1002', 'Jiyeon', 100.00]
]
df = pd.DataFrame(data)
print(df)
1
2
3
4
		0		1		2
0		1000	Steve	90.72
1		1001	James	78.09
2		1002	Jiyeon	100.00

생성된 데이터 프레임에 열(Columns)을 지정해줄 수 있다.

1
2
df = pd.DataFrame(data, columns=['학번', '이름', '점수])
print(df)
1
2
3
4
1
2
3
4
		학번		이름		점수
0		1000	  Steve		90.72
1		1001	  James		78.09
2		1002	  Jiyeon	100.00

이번에는 파이썬 자료구조 중 하나인 딕셔너리(dict)를 통해 데이터프레임을 생성해보자.

1
2
3
4
5
6
7
#딕셔너리로 생성하기
data = { '학번' : ['1000', '1001', '1002'],
		'이름' : ['Steve', 'James', 'Jiyeon'],
        '점수' : [90.72, 78.09, 100.00]}

df = pd.DataFrame(data)
print(df)
1
2
3
4
1
2
3
4
		학번		이름		점수
0		1000	  Steve		90.72
1		1001	  James		78.09
2		1002	  Jiyeon	100.00

(2) 데이터프레임 조회하기

아래 명령어는 데이터프레임에서 원하는 구간만 확인하기 위한 명령어로서 유용하게 사용된다.

df.head(n) - 앞 부분을 n개만 보기 df.tail(n) - 뒷 부분을 n개만 보기 df[‘열이름’] - 해당되는 열을 확인

위에서 사용한 데이터프레임을 그대로 사용한다고 가정하자.

1
print(df.head(2)) #앞 부분 2개만 보기
1
2
3
		학번		이름		점수
0		1000	  Steve		90.72
1		1001	  James		78.09
1
print(df.tail(2)) #뒷 부분 2개만 보기
1
2
3
		학번		이름		점수
1		1001	  James		78.09
2		1002	  Jiyeon	100.00
1
print(df['학번']) #'학번'에 해당되는 열을 보기
1
2
3
4
0	1000
1	1001
2	1002
Name : 학번, dtype : object

(3) 외부 데이터 읽기

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

예를들어 csv파일을 읽을 때에는 pandas.read_csv()를 통해 읽을 수 있다. xlsx파일은 pandas.read_excel()가 있다.

1
2
df = pd.read_csv(r'C:\Users\USER\example.csv')
print(df)

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

그 외에도 이것저것 정말 유용하게 잘 사용되는 판다스~~ 판다스를 더욱 유용하게 사용하기 위해 같이 넘파이와 맷플롯립과 함께 더 알아보자~