QMS_hufs/python_Basic

#2. Pandas PLUS

TSI 2022. 7. 22. 23:37

Colab Link: pandas PLUS (~220801).ipynb

 

pandas PLUS (~220801).ipynb

Colaboratory notebook

colab.research.google.com

*HUFS-QMS codeDay 수업 내용 일부입니다.

 

 

2022.07.22 - [QMS_hufs/python_Basic] - #1. Pandas

 

#1. Pandas

Colab Link: 220719_pandas (~220801).ipynb 220719_pandas (~220801).ipynb Colaboratory notebook colab.research.google.com *HUFS-QMS codeDay 수업 내용 일부입니다. import pandas as pd #파일을 우측 col..

tsi-yejin.tistory.com

위 게시물에 이어 추가적인 pandas 내용을 담았습니다.

import pandas as pd
data = pd.read_csv('/content/city_popul.csv')
data

row를 부분적으로 선택

pd.DataFrame[시작row번호:끝row번호]

data_choice = data.iloc[3:6, 1:4]
data_choice.to_csv('data_choice.csv', index = False)
data_choice

column과 row를 선택하는 방법

loc: 인덱스로 접근(행열의 이름으로 가능)

iloc: 우iㅊi로 접근

 

loc

pd.DataFrame.loc

앞이 비어있으면 첫 인덱스부터,

뒤가 비어있으면 마지막 인덱스까지 찾습니다.
data.loc[[0,2,4,6,7,9], ['인구수', '남자','여자']]
data.loc[2:5, '인구수':'여자'] 
#2:5로 입력했을 때 5행도 출력됨
#5번째 행아니고 5행!!!

iloc

pd.DataFrame.iloc

우iㅊi로 접근

data.iloc[[2,3,4,5],[1,3]]
data.iloc[2:5, 1:]

iloc는 거꾸로 접근이 가능합니다

data.iloc[-5:, -3:]
loc와 iloc를 적절하게 사용하시면 됩니다.
 
 

통계 함수

특정 column의 고유값을 알고 싶다: unique()

data['도시'].unique()

특정 column의 고유값이 몇 개 있는지 알고 싶다: value_counts()

data['도시'].value_counts()

수치를 이용한 함수(9)

각 column의 합계: sum()
각 column의 최대값: max()
각 column의 최소값: min()

특정 column의 최대값의 인덱스: idmax()
특정 column의 최소값: idmin()

각 column의 평균: mean()
각 column의 중앙값: median()
각 column의 분산: var()
각 column의 표준편차: std()
df = data.iloc[:10, 1:]
df #수치로만 구성된 데이터로 새로운 데이터 프레임 생성
df.sum()
df['인구수'].idxmax()   #인구수 column에 최댓값의 인덱스
df['인구수'].idxmin()   #인구수 column에 최솟값의 인덱스
data.loc[9]['도시']
data.loc[7:9]['도시']
data.loc[df['인구수'].idxmin()]['도시']
#인구수 column에서 최솟값을 가진 위치에

기존 column들을 조합하여 새로운 column을 만드려고할 때

+, -, , /, //, %, *, +=, -=, =, /=, //=, %=, *=

data['남자+여자'] = data['남자']+data['여자']
data

data['남자']+data['여자']

data['남자-여자'] = data['남자']-data['여자']
data
data['남자-여자_절대값'] = data['남자-여자'].abs()
data
data['남자/여자'] = data['남자']/data['여자']
data

data['남자']/data['여자']

 

상수를 이용한 column연산

data['여자_100명당_남자수'] = data['남자/여자']*100
data

비교 연산자를 이용한 판별도 가능합니다.

==, !=, >, >=, <, <=

 

인구 수 200만명 이상의 도시를 찾아보자.

data['인구수'] >= 2000000 ###조건에 해당되면 True
(data['인구수'] >= 2000000).sum() ###조건에 해당되는 True의 수 합산

조건에 해당되는 row만 반환해보자.

(columns은 모두 출력하고자 한다.)

data[data['인구수'] >= 2e+6] 
# 0이 많아 지수로 표현
# 2e+6은 2에 10을 6번 곱한 값

 

조건에 해당되는 row와 column을 반환해보자.

data[data['인구수'] >= 2e+6]['도시']

인구수의 중앙값 이상의 도시를 구하자.

data['인구수'][:].median()
median_value = data['인구수'][:].median()
median_value #변수를 생성해서 중앙값을 저장
data[data['인구수'] >= median_value]['도시']