728x90
데이터 EDA를 위한 Pandas 역량기르기 타~임!
* 데이터 출처: https://github.com/justmarkham/DAT8/blob/master/data/u.user
Step 1. 필요한 라이브러리 임포트¶
In [5]:
import pandas as pd
import numpy as np
import os
In [61]:
url = "https://raw.githubusercontent.com/justmarkham/DAT8/master/data/u.user"
users = pd.read_csv(url, sep="|")
users
Out[61]:
user_id | age | gender | occupation | zip_code | |
---|---|---|---|---|---|
0 | 1 | 24 | M | technician | 85711 |
1 | 2 | 53 | F | other | 94043 |
2 | 3 | 23 | M | writer | 32067 |
3 | 4 | 24 | M | technician | 43537 |
4 | 5 | 33 | F | other | 15213 |
... | ... | ... | ... | ... | ... |
938 | 939 | 26 | F | student | 33319 |
939 | 940 | 32 | M | administrator | 02215 |
940 | 941 | 20 | M | student | 97229 |
941 | 942 | 48 | F | librarian | 78209 |
942 | 943 | 22 | M | student | 77841 |
943 rows × 5 columns
Step 3.¶
read_csv를 통해 './data/user.csv' 데이터를 올바른 형태(sep='|')로 불러온 뒤 users에 저장해주세요.
user_id를 인덱스로 설정해주세요.
In [62]:
users.set_index("user_id", inplace=True)
In [63]:
users
Out[63]:
age | gender | occupation | zip_code | |
---|---|---|---|---|
user_id | ||||
1 | 24 | M | technician | 85711 |
2 | 53 | F | other | 94043 |
3 | 23 | M | writer | 32067 |
4 | 24 | M | technician | 43537 |
5 | 33 | F | other | 15213 |
... | ... | ... | ... | ... |
939 | 26 | F | student | 33319 |
940 | 32 | M | administrator | 02215 |
941 | 20 | M | student | 97229 |
942 | 48 | F | librarian | 78209 |
943 | 22 | M | student | 77841 |
943 rows × 4 columns
Step 4. 초반 25행 조회¶
In [65]:
users.head(25)
Out[65]:
age | gender | occupation | zip_code | |
---|---|---|---|---|
user_id | ||||
1 | 24 | M | technician | 85711 |
2 | 53 | F | other | 94043 |
3 | 23 | M | writer | 32067 |
4 | 24 | M | technician | 43537 |
5 | 33 | F | other | 15213 |
6 | 42 | M | executive | 98101 |
7 | 57 | M | administrator | 91344 |
8 | 36 | M | administrator | 05201 |
9 | 29 | M | student | 01002 |
10 | 53 | M | lawyer | 90703 |
11 | 39 | F | other | 30329 |
12 | 28 | F | other | 06405 |
13 | 47 | M | educator | 29206 |
14 | 45 | M | scientist | 55106 |
15 | 49 | F | educator | 97301 |
16 | 21 | M | entertainment | 10309 |
17 | 30 | M | programmer | 06355 |
18 | 35 | F | other | 37212 |
19 | 40 | M | librarian | 02138 |
20 | 42 | F | homemaker | 95660 |
21 | 26 | M | writer | 30068 |
22 | 25 | M | writer | 40206 |
23 | 30 | F | artist | 48197 |
24 | 21 | F | artist | 94533 |
25 | 39 | M | engineer | 55107 |
Step 5. 마지막 10행 조회¶
In [66]:
users.tail(10)
Out[66]:
age | gender | occupation | zip_code | |
---|---|---|---|---|
user_id | ||||
934 | 61 | M | engineer | 22902 |
935 | 42 | M | doctor | 66221 |
936 | 24 | M | other | 32789 |
937 | 48 | M | educator | 98072 |
938 | 38 | F | technician | 55038 |
939 | 26 | F | student | 33319 |
940 | 32 | M | administrator | 02215 |
941 | 20 | M | student | 97229 |
942 | 48 | F | librarian | 78209 |
943 | 22 | M | student | 77841 |
Step 6. 데이터셋은 몇 개의 행으로 이루어져 있나요?¶
943
In [67]:
users.shape[0]
Out[67]:
943
Step 7. 데이터셋은 몇 개의 열로 이루어져 있나요?¶
4
In [68]:
users.shape[1]
Out[68]:
4
Step 8. 열(column)의 이름들을 모두 조회해주세요¶
Index(['age', 'gender', 'occupation', 'zip_code'], dtype='object')
In [69]:
users.columns
Out[69]:
Index(['age', 'gender', 'occupation', 'zip_code'], dtype='object')
Step 9. 데이터셋의 인덱스를 조회해주세요¶
Int64Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ... 934, 935, 936, 937, 938, 939, 940, 941, 942, 943], dtype='int64', name='user_id', length=943)
In [142]:
users.index
Out[142]:
Int64Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
...
934, 935, 936, 937, 938, 939, 940, 941, 942, 943],
dtype='int64', name='user_id', length=943)
Step 10. 각 열의 데이터타입은 무엇인가요?¶
In [71]:
users.dtypes
Out[71]:
age int64
gender object
occupation object
zip_code object
dtype: object
Step 11. occupation column만 조회해주세요¶
In [72]:
users["occupation"]
Out[72]:
user_id
1 technician
2 other
3 writer
4 technician
5 other
...
939 student
940 administrator
941 student
942 librarian
943 student
Name: occupation, Length: 943, dtype: object
Step 12. 데이터셋에는 몇 종류의 직업이 존재하나요?¶
21
In [73]:
users["occupation"].nunique()
Out[73]:
21
Step 13. 데이터셋에서 가장 많이 존재하는 직업은 무엇인가요?¶
student
In [126]:
users["occupation"].value_counts().index[0]
Out[126]:
'student'
In [122]:
users.occupation.value_counts().head(1).index[0]
Out[122]:
'student'
Step 14. users.describe() 코드를 실행해서 숫자 열의 요약정보를 조회해주세요¶
In [82]:
users.describe()
Out[82]:
age | |
---|---|
count | 943.000000 |
mean | 34.051962 |
std | 12.192740 |
min | 7.000000 |
25% | 25.000000 |
50% | 31.000000 |
75% | 43.000000 |
max | 73.000000 |
Step 15. users.describe(include = 'all') 코드를 실행해서 모든 열의 정보를 조회해주세요¶
In [83]:
users.describe(include = 'all')
Out[83]:
age | gender | occupation | zip_code | |
---|---|---|---|---|
count | 943.000000 | 943 | 943 | 943 |
unique | NaN | 2 | 21 | 795 |
top | NaN | M | student | 55414 |
freq | NaN | 670 | 196 | 9 |
mean | 34.051962 | NaN | NaN | NaN |
std | 12.192740 | NaN | NaN | NaN |
min | 7.000000 | NaN | NaN | NaN |
25% | 25.000000 | NaN | NaN | NaN |
50% | 31.000000 | NaN | NaN | NaN |
75% | 43.000000 | NaN | NaN | NaN |
max | 73.000000 | NaN | NaN | NaN |
Step 16. occupation 칼럼만 조회해서 describe() 함수를 실행해주세요¶
count 943
unique 21
top student
freq 196
Name: occupation, dtype: object
In [99]:
users["occupation"].describe()
Out[99]:
count 943
unique 21
top student
freq 196
Name: occupation, dtype: object
Step 17. user들의 평균 나이는 몇 살인가요?¶
34
In [144]:
round(users["age"].mean())
Out[144]:
34
Step 18. 데이터셋에서 가장 적게 등장하는 나이는 몇 살인가요?¶
가장 적게 등장하는 나이는 1번씩 등장하는 나이이며 7, 66, 73, 10, 11살 입니다. 이러한 결과를 조회할수 있도록 데이터 조회하는 코드를 작성해주세요.
In [140]:
users["age"].value_counts().tail()
Out[140]:
7 1
66 1
11 1
10 1
73 1
Name: age, dtype: int64
🐼 value_counts( ) 함수의 매력에 빠진 시간이었다!
728x90
'😁 빅데이터 문제 풀기 & Study > - 이외 사이트 문제' 카테고리의 다른 글
[Pandas] Pandas 연습 문제 풀기 -3 🐼 (0) | 2022.02.22 |
---|---|
[Pandas] Pandas 연습 문제 풀기 - 2 🐼 (0) | 2022.02.21 |
초보자를 위한 파이썬 300제 (241~290번) 10. 파이썬 모듈/11. 파이썬클래스 (0) | 2022.01.10 |
초보자를 위한 파이썬 300제 (290~300번) 12. 파일 입출력과 예외처리 (0) | 2022.01.07 |
초보자를 위한 파이썬 300제 (201~240번) 9. 파이썬 함수 (0) | 2022.01.07 |