-
안녕하세요, 에이도입니다!
이 글에서는 DACON Ch 5 - Ch 7 실습하며 학습한 pandas 튜토리얼 내용입니다.
시작해보겠습니다. 😊
Ch5. 통계함수
목표 : 다양한 통계 함수를 DataFrame에 적용
- DataFrame['컬럼'].unique() : 컬럼의 고윳값 리스트 반환
- DataFrame['컬럼'].value_counts() : 컬럼의 고윳값 카운트 반환
# 특정 column의 고유값 리스트 반환
data['도시'].unique()
[out]
array(['서울', '부산', '인천', '대구', '대전', '광주', '수원', '울산', '고양', '용인', '총합'],
dtype=object)
# 특정 column의 고유값 카운트 반환
data['도시'].value_counts()
[out]
수원 1
광주 1
고양 1
용인 1
울산 1
대전 1
인천 1
총합 1
부산 1
서울 1
대구 1
Name: 도시, dtype: int64
수치를 이용한 함수
- pd.DataFrame.sum() : 각 컬럼의 합계를 반환
- pd.DataFrame.max() : 각 컬럼의 최댓값을 반환
- pd.DataFrame.idxmax() : 특정 컬럼의 최댓값의 인덱스 반환
- pd.DataFrame.min() : 각 컬럼의 최솟값을 반환
- pd.DataFrame.idxmin() : 특정 컬럼의 최솟값의 인덱스 반환
- pd.DataFrame.mean() : 각 컬럼의 평균을 반환
- pd.DataFrame.median() : 각 컬럼의 중앙값을 반환
- pd.DataFrame.var() : 각 컬럼의 분산을 반환
- pd.DataFrame.std() : 각 컬럼의 표준편차를 반환
# 수치 계산에 사용할 데이터만 선택하여 새로운 dataframe에 저장
df = data.iloc[:10, 1:]
df
# 각 컬럼의 합
df.sum()
[out]
인구수 26030340
남자 12880779
여자 13150052
dtype: int64
# 각 컬럼중 최댓값
df.max()
[out]
인구수 9741381
남자 4757642
여자 4984229
dtype: int64
#각 컬럼 최댓값의 index 반환
print ( df['인구수'].idxmax())
print ( df['남자'].idxmax())
print ( df['여자'].idxmax())
[out]
0
0
0
# 컬럼 최댓값의 index를 이용하여 인구가 가장 많은 도시 찾기
#data.loc[ 가장 큰 값의 index ]['도시']
data.loc[df['인구수'].idxmax()]['도시']
[out]
'서울'
# 각 컬럼의 최소값을 반환
df.min()
[out]
인구수 1061440
남자 523803
여자 534617
dtype: int64
# 특정 컬럼의 최소값의 인덱스 반환
df['인구수'].idxmin()
[out]
9
# 컬럼 최솟값의 index를 이용하여 인구가 가장 적은 도시 찾기
data.loc[df['인구수'].idxmin()]['도시']
'용인'
# 각 컬럼의 중앙값을 반환
df.mean()
[out]
인구수 2603034.0
남자 1288077.9
여자 1315005.2
dtype: float64
# 각 컬럼의 분산을 반환
df.var()
[out]
인구수 6.996348e+12
남자 1.658060e+12
여자 1.843244e+12
dtype: float64
# 각 컬럼의 표준편차를 반환
df.std()
[out]
인구수 2.645061e+06
남자 1.287657e+06
여자 1.357661e+06
dtype: float64
ch 5 과제
problem = ['총합', '최대값', '최소값' ,'평균값','중앙값','분산','표준편차']
for i in ['인구수','남자','여자']:
df_sum = df[i].sum()
df_max = df[i].max()
df_min= df[i].min()
df_ave = int(df_sum/len(df))
df_mean_ = df[i].mean()
df_var = df[i].var()
df_std = df[i].std()
if i == '인구수':
population = [df_sum, df_max, df_min, df_ave,df_mean_, df_var, df_std]
elif i == '남자':
man = [df_sum, df_max, df_min, df_ave,df_mean_, df_var, df_std]
elif i == '여자':
woman = [df_sum, df_max, df_min, df_ave,df_mean_, df_var, df_std]
# print(population, man, woman)
# list(map(int, list_a))
population = list(map(int,population))
man = list(map(int,man))
woman = list(map(int,woman))
submission = {'문제':problem,
'인구수':population,
'남자': man,
'여자': woman}
submission = pd.DataFrame(submission)
submission
Ch6. 컬럼 연산
- 목표 : 컬럼 간에 사칙연산을 수행
산술 연산
- 기존에 가지고 있는 컬럼들을 이용하여 새로운 컬럼을 만들 수 있습니다.
- 판다스의 컬럼끼리는 산술 연산자를 이용하여 연산이 가능합니다.
# 컬럼끼리 덧셈
data['남자+여자'] =data['남자'] + data['여자']
data
# print(data['인구수'] == data['남자+여자'])
# 컬럼끼리 뺄쎔
data['남자 - 여자'] =data['남자'] - data['여자']
data
# 컬럼끼리 차이의 절대값
data['남자 - 여자_절대값'] = data['남자 - 여자'].abs()
data
# 컬럼 비율
data['남자/여자'] = data['남자']/data['여자']
data
- 하나의 상수를 이용한 연산
data['여자_100명당_남자수'] = data['남자/여자']*100
data
Ch7. 비교 연산자를 이용한 판별
- 목표 : ==, !=, >, >=, <, <= 와 같은 비교 연산자 학습
pandas에서도 ==,!=, > , >=, < , <=와 같은 비교 연산자가 사용 가능합니다.
# 인구수 200만명 이상의 도시 판별
data['인구수'] >= 2000000
[out]
0 True
1 True
2 True
3 True
4 False
5 False
6 False
7 False
8 False
9 False
10 True
Name: 인구수, dtype: bool
# 인구수 200만명 이상인 도시를 카운트
(data['인구수'] >=2000000). sum()
[out]
5
# 인구수 200만명 이상인 도시일 경우( True) 반환 된 로우만 확인
data[data['인구수'] >= 2e+6]
# 인구수 중앙값 이상의 도시의 로우 확인
data[data['인구수']> data['인구수'].median()][:-1]
# 인구수 중앙값 이상의 도시만 확인
print(data[data['인구수']> data['인구수'].median()]['도시'][:-1],'\n')
print(data[data['인구수']>= data['인구수'].median()]['도시'][:-1])
[out]
0 서울
1 부산
2 인천
3 대구
Name: 도시, dtype: object
0 서울
1 부산
2 인천
3 대구
4 대전
Name: 도시, dtype: object
# 남자가 여자보다 더 많은 도시 출력
data[data['남자']>data['여자']]['도시']
[out]
2 인천
4 대전
6 수원
7 울산
Name: 도시, dtype: object
# 남자+여자의 합이 인구와 다른 도시의 로우 출력
data[data['인구수']!= data['남자+여자']]
# 남자+여자의 합이 인구와 다른 도시 출력
data[data['인구수']!= data['남자+여자']]['도시']
[out]
0 서울
9 용인
10 총합
Name: 도시, dtype: object
submission =data[data['인구수']!= data['남자+여자']]
submission.to_csv('data/data7_pandas.csv', index = False)
이것으로 pandas 튜토리얼 ( DACON)을 마치겠습니다!
감사합니다 :)
'Make the Learning Curve > Python' 카테고리의 다른 글
[Python] pyautogui를 이용한 마우스 자동화(feat. ppt 자동 인쇄) (0) | 2021.03.03 |
---|---|
[Python] Pandas 튜토리얼 (Feat.DACON _ Ch 01 - 04) (0) | 2021.01.07 |
[Python] heapq (힙큐)사용 (0) | 2021.01.04 |
[Python] Sort() , sorted() 정렬 함수 (0) | 2020.12.20 |
[알고리즘] 선택 정렬 (0) | 2020.12.18 |
댓글