[라이브러리] 판다스(Pandas) - 시리즈(Series), 데이터프레임(DataFrame), 외부 데이터 읽기, 프로파일링(Profiling)

판다스(Pandas)

- 파이썬 데이터 처리를 위한 라이브러리

- Pandas는 pd라는 명칭으로 import 하는 것이 관례

import pandas as pd

 

  •  데이터 구조 종류

: 시리즈(Series), 데이터프레임(DataFrame), 패널(Panel)

 

 

 

시리즈(Series)

- 1차원 배열의 값(values)에 각 값에 대응되는 인덱스(index)를 부여할 수 있는 구조

import pandas as pd

sr = pd.Series([17000, 22000, 1000, 5000], index=["피자", "치킨", "콜라", "하이볼"])

print("시리즈 출력 :")
print('-'*15)
print(sr)
시리즈 출력 :
---------------
피자     17000
치킨     22000
콜라      1000
하이볼     5000
dtype: int64
print("시리즈의 값 : {}\n".format(sr.values))
print("시리즈의 인덱스 : {}".format(sr.index))
시리즈의 값 : [17000 22000  1000  5000]

시리즈의 인덱스 : Index(['피자', '치킨', '콜라', '하이볼'], dtype='object')

 

 

 

데이터프레임(DataFrame)

- 행과 열을 가지는 2차원 리스트를 매개변수로 전달

- 열(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("데이터프레임 출력 :")
print('-'*15)
print(df)
데이터프레임 출력 :
---------------
       A  B  C
one    1  2  3
two    4  5  6
three  7  8  9
print("데이터프레임의 값 :")
print('-'*15)
print(df.values)

print("\n데이터프레임의 인덱스 : {}".format(df.index))
print("\n데이터프레임의 열이름 : {}".format(df.columns))
데이터프레임의 값 :
---------------
[[1 2 3]
 [4 5 6]
 [7 8 9]]

데이터프레임의 인덱스 : Index(['one', 'two', 'three'], dtype='object')

데이터프레임의 열이름 : Index(['A', 'B', 'C'], dtype='object')

 

 

 

- 리스트(List)로 데이터프레임 생성

data = [
    ['50', 'Steve', 99],
    ['51', 'James', 60],
    ['52', 'Tony', 81],
    ['53', 'Choi', 47],
    ['54', 'Jin', 100],
]

# 열 이름 지정
df = pd.DataFrame(data, columns=['학번', '이름', '점수'])
print(df)
   학번     이름   점수
0  50  Steve   99
1  51  James   60
2  52   Tony   81
3  53   Choi   47
4  54    Jin  100

 

 

 

- 딕셔너리(Dictionary)로 데이터프레임 생성

data = {
    '학번':['50', '51', '52', '53', '54'],
    '이름':['Steve', 'James', 'Tony', 'Choi', 'Jin'],
    '점수':[99, 60, 81, 47, 100]
}

df = pd.DataFrame(data)
print(df)
   학번     이름   점수
0  50  Steve   99
1  51  James   60
2  52   Tony   81
3  53   Choi   47
4  54    Jin  100

 

 

- 데이터프레임 조회

  • df.head(n)

: 앞 부분의 데이터 n개 확인

: n의 디폴트값은 5

print(df.head(3))
   학번     이름  점수
0  50  Steve  99
1  51  James  60
2  52   Tony  81

 

  • df.tail(n)

: 뒷 부분의 데이터 n개 확인

: n의 디폴트값은 5

print(df.tail(3))
   학번    이름   점수
2  52  Tony   81
3  53  Choi   47
4  54   Jin  100

 

  • df['열 이름']

: 해당되는 열 데이터 확인

print(df['이름'])
0    Steve
1    James
2     Tony
3     Choi
4      Jin
Name: 이름, dtype: object

 

 

 

외부 데이터 읽기

- Pandas는 csv, 텍스트, Excel, SQL, HTML, JSON 등 다양한 데이터 파일을 읽을 수 있음

 

  • pd.read_csv()

: csv 파일을 읽어옴

# iris csv 파일 읽어옴
df = pd.read_csv('data/iris3.csv')
print(df.head())
   sepal_length  sepal_width  petal_length  petal_width      species
0           5.1          3.5           1.4          0.2  Iris-setosa
1           4.9          3.0           1.4          0.2  Iris-setosa
2           4.7          3.2           1.3          0.2  Iris-setosa
3           4.6          3.1           1.5          0.2  Iris-setosa
4           5.0          3.6           1.4          0.2  Iris-setosa

 

 

 

판다스 프로파일링(Pandas-Profiling)

- 데이터 내 값의 분포, 변수 간의 관계, Null 값과 같은 결측값(missing values) 존재 유무 등을 파악

- 방대한 양의 데이터를 가진 데이터프레임을 .profile_report()로 탐색

pip install -U pandas-profiling

 

 

 

판다스 프로파일링 실습

- 와인 데이터 적용

import pandas as pd
import pandas_profiling

data = pd.read_csv('data/wine.csv', encoding='latin1')
data[:5]

 

- 프로파일링 적용

: 개요, 변수, 상세사항, 상관계수, 히트맵, 수지도 등 확인 가능

data.profile_report()