판다스란?
파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있는 라이브러리
고수준 API 제공
파이썬의 리스트, 컬렉션, 넘파이 등의 내부 데이터 외에도 CSV등의 파일을 쉽게 DataFrame으로 변경해 데이터의 가공/분석을 편리하게 수행할 수 있도록 함
핵심 객체 -> DataFrame
DataFrame
: Index를 key값으로 가지며 행x열 로 이뤄진 2차원 데이터를 담은 데이터 구조체, 여러개의 Series로 이뤄져있음
eg. DataFrame 생성 - 아래와 같이 딕셔너리를 넣을 수도 있고, 리스트나 NumPy array를 넣을 수도 있음
dict_df = pd.DataFrame({
'category': ['skirt', 'sweater', 'coat', 'jeans'],
'quantity': [10, 15, 6, 11],
'price': [30000, 60000, 95000, 35000]
})
Index
: RDBMS의 PK처럼 개별 데이터를 고유하게 식별하는 key값, 모든 데이터는 생성되는 순간 고유의 Index값을 가지게 됨
Series
: Index를 key값으로 가지고 있으나, 컬럼이 하나인 데이터 구조체
- info(): 총 데이터 수, 데이터 타입, Null 수를 알 수 있음
- describe(): 컬럼별 숫자형 데이터값의 n-percentile분포도, 평균값, 최댓값, 최솟값을 알 수 있으며, 오직 숫자형(int, float 등) 컬럼의 분포도만 조사함(*object 타입의 컬럼은 출력에서 제외됨)
- value_counts(): 해당 컬럼값의 유형 및 건수를 확인할 수 있음, 데이터의 분포도를 확인하는데 유용함
- dropna=True: Null값을 무시하고 개별 데이터 값의 건수를 계산(*False는 Null값 포함)
- head(): 전체 데이터 중에서 앞의 특정 수만큼만 데이터를 출력(*인자값이 없을 경우, 자동으로 5행까지 출력)
넘파이 ndarray, 리스트, 딕셔너리 -> DataFrame으로 변환
1) 2차원 리스트와 2차원 NumPy array를 가지고 DataFrame 생성
two_dimensional_list = [
['skirt', 10, 30000],
['sweater', 15, 60000],
['coat', 6, 95000],
['jeans', 11, 35000]
]
two_dimensional_array = np.array(two_dimensional_list)
list_df = pd.DataFrame(two_dimensional_list)
array_df = pd.DataFrame(two_dimensional_array)
컬럼의 이름을 따로 설정하지 않았기 때문에, 컬럼 자리에 그냥 0부터 시작하는 숫자값이 생성되어 있다.
DataFrame을 만들 때 columns라는 옵션을 사용해서 컬럼명을 설정할 수 있다.
list_df = pd.DataFrame(two_dimensional_list, columns=['category', 'quantity', 'price'])
array_df = pd.DataFrame(two_dimensional_array, columns=['category', 'quantity', 'price'])
2) 딕셔너리가 담겨 있는 리스트로 DataFrame 생성
dict_list = [
{'category': 'skirt', 'quantity': 10, 'price': 30000},
{'category': 'sweater', 'quantity': 15, 'price': 60000},
{'category': 'coat', 'quantity': 6, 'price': 95000},
{'category': 'jeans', 'quantity': 11, 'price': 35000}
]
df4 = pd.DataFrame(dict_list)
DataFrame-> 넘파이 ndarray, 리스트, 딕셔너리로 변환
- values
컬럼 데이터 세트 생성 및 수정
DataFrame의 컬럼 데이터 세트 생성 및 수정 시, [ ] 연산자를 이용한다.
titanic_df['Age_0']=0
titanic_df.head(3)
DataFrame 불러오기
pd.read_csv('/data/burger.csv')
DataFrame 데이터 삭제
- drop():
예제1. DataFrame 수정
players_df에 아래 사항들을 모두 반영해 주세요.
1) 해당 시즌에서 아시아 최초 득점왕을 차지한 손흥민(Son Heung-Min) 선수의 데이터를 추가해 주세요.
- 경기: 35회
- 경기 시간: 3051분
- 골: 23골
- 어시스트: 7회
2) 벤 데이비스(Ben Davies)라는 선수가 참여한 경기 수 정보가 누락되어 있습니다. 결측값을 29로 바꿔 주세요.
3) 선수들이 모두 토트넘 홋스퍼 구단 소속이라는 것을 알 수 있도록 team이라는 컬럼을 새로 만들어서 Tottenham이라는 값을 넣어 주세요.
import pandas as pd
players_df = pd.read_csv('data/tottenham_2122.csv', index_col='name')
players_df.loc['Son Heung-Min'] = [35, 3051, 23, 7] # 손흥민 선수의 데이터에 경기 수, 경기 시간, 골, 어시스트 순으로 값을 채워 넣고 리스트를 할당
players_df.loc['Ben Davies', 'matches'] = 29 # 인덱스는 Ben Davies, 컬럼은 matches에 해당하는 데이터에 29라는 값을 수정
players_df['team'] = 'Tottenham' # team이라는 컬럼을 추가해서 Tottenham이라는 값을 채움
players_df