import pandas as pd
df = pd.read_csv('gapminder.tsv', sep = '\t')
print(type(df)) # 자료형 확인
print(df.shape) # (행,열)을 튜플로 반환
print(df.columns) # 열(칼럼) 이름 확인
print(df.dtypes) # 데이터 프레임 객체의 각 열은 같은 자료형이지만, 각 행은 여러가지 자료형일 수 있다.
#자료형 object = string , int64 = 64 , float64 = float , datetime64 = datetime 왼쪽 판다스 오른쪽 파이선
print(df.info) # 다양한 정보 반환
loc 는 행 이름을 기준으로 데이터를 추출
iloc는 행 번호(위치)를 기준으로 데이터를 추출
print(df.loc[0]) # 1번째 행 한줄 출력
print(df.loc[99]) # 100번째
# 마지막 행 추출
print(df.iloc[-1])
# ==
number_of_rows = df.shape[0] # shape 속성을 이용해서 행과 열의 수를 튜플로 구해서 행의 수를 변수에 저장
last_row_index = number_of_rows - 1 #(행 개수 -1)이 마지막 행 번호임
print(df.loc[last_row_index]) # 자료형 시리즈
# ==
print(df.tail(n = 1)) # 자료형 데이터 프레임
print(df.loc[:,['year','pop']]) # year 과 pop 열의 모든 행 데이터를 가져옴
print(df.loc[0:3,['year','pop']]) # 처음부터 3번째 데이터까지 가져옴
print(df.iloc[:,[2,4,-1]]) # 3,5번째와 마지막 열의 모든 데이터를 추출
print(df.iloc[0:3,[2,4,-1]]) # 3,5번째와 마지막 열의 4개의 데이터만 추출
range()와 슬라이싱도 이용할 수 있다.
#range 로 데이터 추출
small_range = list(range(5))
subset = df.iloc[:,small_range] # 5개의 칼럼의 모든 행 데이터 추출
# 슬라이싱 사용 가능
subset = df.iloc[:,0:3] # 0 부터 3 열의 모든 데이터
subset = df.iloc[:, 3:6] # 3 부터 6 열의 모든 데이터
subset = df.iloc[:, 1:6:2] # 1 부터 6까지 2 간격으로
print(df.loc[42,'country']) # 컨트리 열에서 행 이름이 42인 것 출력
# ==
print(df.iloc[42,0]) # 컨트리 열에서 행 번호가 42번인 것을 출력
print(df.iloc[[0,99,999],[0,3,5]])
# ==
print(df.loc[[0,99,999],['country','lifeExp','gdpPercap']])
groupby() 사용법
# 연도별 평균 기대 수명
print(df.groupby('year')['lifeExp'].mean()) #1. 연도별로 그룹화 2. 'lifeExp'열 선택 3. mean() 평균 계산
# 세분화
# 연도별로 그룹화된 객체 생성
groupped_year_df = df.groupby('year')
# 그룹화한 데이터에서 계산하고 싶은 특정 열 선택 [대괄호]
groupped_year_df_lifeExp = groupped_year_df['lifeExp']
# 평균 계산하기
mean_lifeExp_by_year = groupped_year_df_lifeExp.mean()
mean_lifeExp_by_year
2개 이상의 열을 그룹화할 때는 아래와 같이 하면된다.
#2개 이상의 열 그룹화하기
mulit_group_var = df.groupby(['year','continent'])[['lifeExp','gdpPercap']].mean()
year 과 continent를 기준으로 그룹화 하여 lifeExp, gdpPercap의 평균을 계산하여 아래와 같은 결과가 나옴.
평균을 구하는 것 만큼 그룹화한 데이터 개수를 구하는 것도 중요하다고 한다.
# 그룹화한 데이터 개수 구하기
# nunique() # 중복을 제외한 개수를 구한다.
print(df.groupby('continent')['country'].nunique()) # continent 별 country 개수
# value_counts() 지정한 열이나 행의 개수(빈도수)를 구한다.
print(df.groupby('continent')['country'].value_counts())
'데이터 분석 > Do it! 판다스 입문' 카테고리의 다른 글
[day2] 판다스 자료구조 살펴보기 (0) | 2023.12.18 |
---|