BASHA TECH
Ch02. 판다스 시작하기 본문
728x90
2-1. 데이터 집합 불러오기
2-2. 데이터 추출하기 => 열 단위 데이터 추출 , 행 단위 데이터 추출, loc/iloc
2-3. 기초적인 통계 계산
2-4. 그래프 그리기
참고 링크 : https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html
행 선택 할 때 사용
iloc : Purely integer-location based indexing for selection by position.
loc : Access a group of rows and columns by label(s) or a boolean array.
참고 : https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
# 02-01 데이터 불러오기
# read_csv() pandas module function : csv 파일 읽기 => dataframe return
# gapminder.csv
# import pandas
# pandas.read_csv()
import pandas as pd
# pd.read_csv()?
pd.read_csv?
# read_csv() => return dataframe(sheet) object
df = pd.read_csv('../data/gapminder.tsv', sep='\t') #sep = ',' '\t'
# 데이터 간단히 확인 : head() => 앞, tail() : 뒤에 있는 데이터 확인
df.head(1) # head(cnt) => 위에서 5개 확인 default가 5개임.
# 1개만 확인 하고 싶으면 df.head(1)
# default => df.head()
# 뒤 확인 => tail(cnt)
df.tail()
df = pd.read_csv(
'../data/gapminder.tsv' # 읽어올 파일 지정
, sep='\t' # 데이터 분리 기호 => tab
, header=0 # 컬럼명으로 사용할 행 선택, default => 0
)
# 데이터 간단히 확인 : head() => 앞, tail() : 뒤
df.head(1) # head(cnt) => 위에서 5개 확인 default가 5개
# 타입 확인 (타입은 내장함수임)
type(df)
# => pandas.core.frame.DataFrame
# pandas.core. : package / frame. : module / DataFrame : class
# class => variable / method
# 데이터 구조 확인 : shape attribute => tuple
df.shape
# df라는 데이터프레임의 기본 정보를 출력해라.
df.info()
# 데이터프레임에서 컬럼(열) 인덱싱, 컬럼(열) 슬라이싱
# 1. 인덱싱
# 2. 슬라이싱
# 3. 블린 인덱싱
# 4. 팬시 인덱싱
df.head()
# 1. Indexing country 추출
df['country']
# 2. Column Slicing => country continent year => 팬시 색인 : 비연속 인덱싱
# 팬시 색인 : 비연속 슬라이싱. (슬라이싱은 연속되어야 하니까 이건 비연속.)
# df[0:2] # 행 추출
# df['country':'year'] # 범위를 줘서는 안 된다. TypeError 뜸
# df['country','continent','year'] # KeyError
subset = df[['country','continent','year']] # => Fancy Indexing
type(subset) # DataFrame
df.columns
df[['country','year','pop']].head() # DataFrame object가 나옴
df[['country','year','pop']].head().sort_values(by='year') # year로 정렬.
# 5년마다 인구조사 한다는 걸 알수 있음. 그리고 인구가 증가하고 있다는 사실도.
#
df[0:2]
# 행 추출
# loc(명인덱싱), iloc(정수인덱싱)
df.head()
df.loc[0] # series로 나옴
df.loc[0]['continent'] # continet라는 인덱싱을 가져와!
df.iloc[0]
df.loc[0]
df.iloc[99] # iloc로 접근 했으니 정수 인덱싱이지만 이름이 99인 row가 있다. Name: 99
# 행, 열 추출
# df.loc[행,열]
df.loc[:,['year','pop']] # DataFrame
# 행, 열 추출
# df.loc[행,열]
df.loc[5:10,['year','pop']] # 판다스의 인덱스는 and 값 제외 안 됨. 5~10 모두 나옴
df.loc[:,'year'] # Series
df.loc[:,['year']] # DataFrame
# DataFrame과 Series는 다른 거임
type(df.loc[:, 'year'])
type(df.loc[:, ['year']])
df.loc[:,['year','pop']].head()
# 'year','pop' : 명인덱싱 => loc 사용해야 한다.
df.iloc[:,['year','pop']].head() # *** IndexError!
# iloc는 에러임 loc를 써야함.
# 왜 loc여야 되는가? year,pop은 명 인덱싱이니까 인덱싱이 안 맞아서 에러남.
# iloc 사용
df.iloc[:,-1]
df.iloc[:,[-1]].head() # DataFrame
df.iloc[:,['gdpPercap']].head() # 이건 loc, iloc 구분해서 사용하기
df.loc[:,['gdpPercap']].head() # 이건 iloc임.
# 대륙별 나라 개수 세기
df.groupby(by=['continent'])['country'].nunique()
df.groupby(by=['continent'])
# SeriesGroupBy
df.groupby(by=['continent'])['country']
# 대륙이 빠진 value count
df['continent'].value_counts()
# 숫자형 데이터의 기술 통계 => object인 애들은 모두 빠짐
df.describe()
df.info()
# describe는 DataFrame
type(df.describe())
# 이 표에서 50%가 중위값
# 평균과 중위값이 같다 => 밸커버(=정규분포)
df.describe()[['year','pop']]
## 데이터 시각화
import matplotlib.pyplot as plt
# 시각화에 사용할 데이터 생성
# 연도별 lifeExp 평균
# 긴 코드는 \ 치고 다음줄로 내려가면 코드가 이어진다.
global_yearly_life_expectancy = \
df.groupby('year')['lifeExp'].mean()
print(global_yearly_life_expectancy)
# axis x(x축)/index : year , values= > y axis
# Series => plot() method : 선 그래프
global_yearly_life_expectancy.plot()
728x90
반응형
'Computer > Pandas' 카테고리의 다른 글
Ch05. 데이터 연결하기 (0) | 2022.09.27 |
---|---|
Ch04. 그래프 그리기 (0) | 2022.09.27 |
Ch03. 판다스 데이터 프레임과 시리즈 (0) | 2022.09.26 |
판다스 정리 (0) | 2022.09.26 |
pandas 설치 (1) | 2022.09.23 |
Comments