판다스(Pandas)는 고성능의 사용이 쉬운 데이터구조와 파이썬 프로그래밍언어를 위한 데이터분석 도구를 제공합니다. 즉 판다스(Pandas)는 파이썬 데이터 처리를 위한 라이브러리입니다. 파이썬을 이용한 데이터 분석과 같은 작업에서 필수 라이브러리로 알려져 있습니다. 참고할 수 있는 Pandas 링크는 다음과 같습니다.
링크 : http://pandas.pydata.org/pandas-docs/stable/
아나콘다를 설치하지 않았다면 아래의 커맨드로 Pandas를 별도 설치할 수 있습니다.
pip install pandas
> ipython
...
In [1]: import pandas as pd
In [2]: pd.__version__
Out[2]: '0.25.1'
Pandas의 경우, 주로 pd라는 명칭으로 임포트하는 것이 관례입니다.
import pandas as pd
이하 아래에서 수행되는 모든 Pandas 코드들은 위의 임포트 코드를 우선 수행했다고 가정합니다.
Pandas는 시리즈(Series), 데이터프레임(DataFrame), 패널(Panel) 세 가지의 데이터 구조를 사용합니다.
1). 시리즈(Series)
시리즈 클래스는 1차원 배열의 값(values)에 각 값에 대응되는 인덱스(index)를 부여할 수 있는 구조를 갖고 있습니다.
sr = pd.Series([17000, 18000, 1000, 5000],
index=["피자", "치킨", "콜라", "맥주"])
print(sr)
피자 17000
치킨 18000
콜라 1000
맥주 5000
dtype: int64
print(sr.values)
[17000 18000 1000 5000]
print(sr.index)
Index(['피자', '치킨', '콜라', '맥주'], dtype='object')
2). 데이터프레임(DataFrame)
데이터프레임은 2차원 리스트를 매개변수로 전달합니다. 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)가 존재합니다. 즉, 행과 열을 가지는 자료구조입니다. 시리즈가 인덱스(index)와 값(values)으로 구성된다면, 데이터프레임은 열(columns)까지 추가되어 열(columns), 인덱스(index), 값(values)으로 구성됩니다.
예제를 통해 데이터프레임의 구성을 이해해보도록 하겠습니다.
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
생성된 데이터프레임으로부터 인덱스, 값, 열을 각각 출력해보겠습니다.
print(df.index) # 인덱스 출력
Index(['one', 'two', 'three'], dtype='object')
print(df.columns) # 열 출력
Index(['A', 'B', 'C'], dtype='object')
print(df.values) # 값 출력
[[1 2 3]
[4 5 6]
[7 8 9]]
3) 데이터프레임의 생성
데이터프레임은 리스트(List), 시리즈(Series), 딕셔너리(dict), 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
생성된 데이터프레임에 열(columns)을 지정해줄 수 있습니다.
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
이번에는 파이썬 자료구조 중 하나인 딕셔너리(dict)를 통해 데이터프레임을 생성해보겠습니다.
# 딕셔너리로 생성하기
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 = pd.DataFrame(data)
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
4) 데이터프레임 조회하기
아래의 명령어는 데이터프레임에서 원하는 구간만 확인하기 위한 명령어로서 유용하게 사용됩니다.
df.head(n) - 앞 부분을 n개만 보기
df.tail(n) - 뒷 부분을 n개만 보기
df['열이름'] - 해당되는 열을 확인
위에서 사용한 데이터프레임을 그대로 사용한다고 가정합니다.
print(df.head(3)) # 앞 부분을 3개만 보기
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
print(df.tail(3)) # 뒷 부분을 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
5) 외부 데이터 읽기
Pandas는 CSV, 텍스트, Excel, SQL, HTML, JSON 등 다양한 데이터 파일을 읽고 데이터 프레임을 생성할 수 있습니다.
예를 들어 csv 파일을 읽을 때는 pandas.read_csv()를 통해 읽을 수 있습니다.
다음과 같은 example.csv 파일이 있다고 합시다.
<![if !vml]>
<![endif]>
df=pd.read_csv('example.csv 파일의 경로') # example.csv 파일 읽기
# 예를 들어 윈도우 바탕화면에서 작업한 저자의 경우
# df=pd.read_csv(r'C:\Users\USER\Desktop\example.csv')였습니다.
print(df)
student id name score
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
이 경우 인덱스가 자동으로 부여된 것을 볼 수 있습니다. 인덱스를 출력해보도록 하겠습니다.
print(df.index)
RangeIndex(start=0, stop=6, step=1)
<![if !supportLineBreakNewLine]>
<![endif]>
cn