728x90
데이터 EDA를 위한 Pandas 역량기르기 타~임!
맛집 데이터를 정돈하기¶
In [1]:
# 라이브러리 임포트 하기
import pandas as pd
import matplotlib.pyplot as plt
import os
In [2]:
os.listdir('./data')
Out[2]:
['.ipynb_checkpoints',
'auto-mpg.csv',
'euro12.csv',
'Euro_2012_stats_TEAM.csv',
'matzipData.csv',
'남북한발전전력량.xlsx',
'소상공인시장진흥공단_상가업소정보_의료기관.csv',
'주가데이터.xlsx']
In [3]:
# './data/matzipData.csv'을 읽어서 df에 대입하기, 단 인코딩은 utf-8
df = pd.read_csv("./data/matzipData.csv", encoding="utf-8")
df
Out[3]:
Restaurant Name | Rating | Address | Tel | Food | Price | Parking | Operating Time | Holiday | |
---|---|---|---|---|---|---|---|---|---|
0 | 이나니와요스케 | 4.4 | 서울시 중구 을지로1가 192-11 | 02-772-9994 | 라멘 / 소바 / 우동 | 만원-2만원 | 주차공간없음 | 11:00 - 23:00 | 일 |
1 | 바오차이 | 4.4 | 서울시 중구 을지로2가 203 | 02-6031-0107 | 정통 중식 / 일반 중식 | 2만원-3만원 | 유료주차 가능 | 11:30 - 21:30 | NaN |
2 | 라칸티나 | 4.4 | 서울시 중구 을지로1가 50 | 02-777-2579 | 이탈리안 | 3만원-4만원 | NaN | 월-토: 11:30 - 23:00 일: 17:30 - 23:00 | NaN |
3 | 라세느 | 4.3 | 서울시 중구 소공동 1 | 02-317-7171 | 뷔페 | 4만원 이상 | 발렛 | 06:00 - 22:00 | NaN |
4 | 산수갑산 | 4.3 | 서울시 중구 인현동1가 15-4 | 02-2275-6654 | 탕 / 찌개 / 전골 | 만원 미만 | 유료주차 가능 | 월-금: 11:30 - 22:00 토: 11:30 - 20:00 | 일 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
395 | 누룩나무 | 4 | 서울시 종로구 관훈동 118-19 | 02-722-3398 | 전통 주점 / 포차 | 만원-2만원 | 주차공간없음 | 17:00 - 01:30 | 일 |
396 | 옴 | 4 | 서울시 종로구 신문로1가 2 | 02-723-4848 | 인도 음식 | 만원-2만원 | 주차공간없음 | 11:00 - 22:00 | NaN |
397 | 코블러 | 4 | 서울시 종로구 내자동 157 | 02-733-6421 | 칵테일 / 와인 | 만원-2만원 | 유료주차 가능 | 19:00 - 03:00 | 일 |
398 | 클류치 | 4 | 서울시 종로구 명륜3가 79-1 | 010-2702-1496 | 카페 / 디저트 | 만원 미만 | 주차공간없음 | 월-토: 10:00 - 23:00 일: 11:00 - 20:00 | NaN |
399 | 도토리 | 4 | 서울시 종로구 안국동 24-1 | 02-6405-8153 | 기타 한식 | 만원 미만 | 유료주차 가능 | 월-금: 10:30 - 21:00 토-일: 10:30 - 22:00 | NaN |
400 rows × 9 columns
In [4]:
# df 행,열의 개수 확인하기
df.shape
Out[4]:
(400, 9)
In [5]:
# df의 모든 컬럼의 데이터타입 확인하기
df.dtypes
Out[5]:
Restaurant Name object
Rating object
Address object
Tel object
Food object
Price object
Parking object
Operating Time object
Holiday object
dtype: object
In [6]:
# 앞의 5개 데이터 보기
df.head()
Out[6]:
Restaurant Name | Rating | Address | Tel | Food | Price | Parking | Operating Time | Holiday | |
---|---|---|---|---|---|---|---|---|---|
0 | 이나니와요스케 | 4.4 | 서울시 중구 을지로1가 192-11 | 02-772-9994 | 라멘 / 소바 / 우동 | 만원-2만원 | 주차공간없음 | 11:00 - 23:00 | 일 |
1 | 바오차이 | 4.4 | 서울시 중구 을지로2가 203 | 02-6031-0107 | 정통 중식 / 일반 중식 | 2만원-3만원 | 유료주차 가능 | 11:30 - 21:30 | NaN |
2 | 라칸티나 | 4.4 | 서울시 중구 을지로1가 50 | 02-777-2579 | 이탈리안 | 3만원-4만원 | NaN | 월-토: 11:30 - 23:00 일: 17:30 - 23:00 | NaN |
3 | 라세느 | 4.3 | 서울시 중구 소공동 1 | 02-317-7171 | 뷔페 | 4만원 이상 | 발렛 | 06:00 - 22:00 | NaN |
4 | 산수갑산 | 4.3 | 서울시 중구 인현동1가 15-4 | 02-2275-6654 | 탕 / 찌개 / 전골 | 만원 미만 | 유료주차 가능 | 월-금: 11:30 - 22:00 토: 11:30 - 20:00 | 일 |
In [7]:
# 데이터의 요약 정보 보기
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 400 entries, 0 to 399
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Restaurant Name 400 non-null object
1 Rating 400 non-null object
2 Address 400 non-null object
3 Tel 350 non-null object
4 Food 400 non-null object
5 Price 397 non-null object
6 Parking 329 non-null object
7 Operating Time 364 non-null object
8 Holiday 126 non-null object
dtypes: object(9)
memory usage: 28.2+ KB
In [8]:
# 데이터프레임의 결측치 개수 확인하기
df.isnull().sum()
Out[8]:
Restaurant Name 0
Rating 0
Address 0
Tel 50
Food 0
Price 3
Parking 71
Operating Time 36
Holiday 274
dtype: int64
In [9]:
# 'Holiday'열의 데이터별 개수 확인하기
df["Holiday"].value_counts()
Out[9]:
일 75
월 21
토, 일 7
화 3
일, 월 2
수 2
일, 첫째 월 2
둘째/넷째 일 2
월, 화 2
둘째, 넷째 일 1
첫째, 셋째 월, 둘째, 넷째 일 1
월, 일 1
월, 마지막 화 1
넷째 일, 월 1
월, 셋째 화 1
격주 월 1
첫째/셋째 일 1
토-일 1
토 1
Name: Holiday, dtype: int64
In [10]:
# Holiday는 결측치가 274개 있음
df["Holiday"].isnull().sum()
Out[10]:
274
In [11]:
# 'Holiday'열의 결측치를 '연중무휴'로 변경하기
df["Holiday"].fillna("연중무휴",inplace=True)
In [12]:
# 'Holicay'열의 결측치 수 확인하기
# 0
df["Holiday"].isnull().sum()
Out[12]:
0
In [13]:
# 'Price'열의 데이터별 개수 확인하기
df["Price"].value_counts()
Out[13]:
만원-2만원 161
만원 미만 159
2만원-3만원 46
4만원 이상 22
3만원-4만원 9
Name: Price, dtype: int64
In [14]:
# 'Price'열의 결측치 개수 확인하기
df["Price"].isnull().sum()
Out[14]:
3
In [15]:
# 'Price'열의 결측치를 '10000'로 변경하기
df['Price'].fillna('10000', inplace=True)
In [16]:
# 'Price'열의 결측치 개수 확인하기
df["Price"].isnull().sum()
Out[16]:
0
In [17]:
df["Price"].value_counts()
Out[17]:
만원-2만원 161
만원 미만 159
2만원-3만원 46
4만원 이상 22
3만원-4만원 9
10000 3
Name: Price, dtype: int64
In [18]:
# 'price'열의 '만원 미만'->'10000'으로 변경하고 price 변수에 대입하기
price = df["Price"].replace("만원 미만","10000")
In [19]:
price
Out[19]:
0 만원-2만원
1 2만원-3만원
2 3만원-4만원
3 4만원 이상
4 10000
...
395 만원-2만원
396 만원-2만원
397 만원-2만원
398 10000
399 10000
Name: Price, Length: 400, dtype: object
In [20]:
# 'price'열의 '만원-2만원'->'20000'으로 변경하고 price 변수에 대입하기
price = price.replace('만원-2만원','20000')
price
Out[20]:
0 20000
1 2만원-3만원
2 3만원-4만원
3 4만원 이상
4 10000
...
395 20000
396 20000
397 20000
398 10000
399 10000
Name: Price, Length: 400, dtype: object
In [21]:
# 'price'열의 '2만원-3만원'->'30000'으로 변경하고 price 변수에 대입하기
price = price.replace('2만원-3만원','30000')
price
Out[21]:
0 20000
1 30000
2 3만원-4만원
3 4만원 이상
4 10000
...
395 20000
396 20000
397 20000
398 10000
399 10000
Name: Price, Length: 400, dtype: object
In [22]:
# 'price'열의 '3만원-4만원'->'40000'으로 변경하고 price 변수에 대입하기
price = price.replace('3만원-4만원','40000')
price
Out[22]:
0 20000
1 30000
2 40000
3 4만원 이상
4 10000
...
395 20000
396 20000
397 20000
398 10000
399 10000
Name: Price, Length: 400, dtype: object
In [23]:
# 'price'열의 '4만원 이상'->'50000'으로 변경하고 price 변수에 대입하기
price = price.replace('4만원 이상','50000')
price
Out[23]:
0 20000
1 30000
2 40000
3 50000
4 10000
...
395 20000
396 20000
397 20000
398 10000
399 10000
Name: Price, Length: 400, dtype: object
In [24]:
# price 변수의 데이터타입 확인하기
price.dtypes
Out[24]:
dtype('O')
In [25]:
# price 변수의 데이터타입을 'int64'로 변경하기
price = price.astype("int64")
In [26]:
# price 변수의 데이터별 개수 확인하기
price.value_counts()
Out[26]:
10000 162
20000 161
30000 46
50000 22
40000 9
Name: Price, dtype: int64
In [27]:
# price 변수의 데이터타입 확인하기
price.dtypes
Out[27]:
dtype('int64')
In [28]:
# df['Price'] 조회
df['Price']
Out[28]:
0 만원-2만원
1 2만원-3만원
2 3만원-4만원
3 4만원 이상
4 만원 미만
...
395 만원-2만원
396 만원-2만원
397 만원-2만원
398 만원 미만
399 만원 미만
Name: Price, Length: 400, dtype: object
In [29]:
# df['Price']열을 price로 변경하기
df['Price'] = price
In [30]:
# df확인
df
Out[30]:
Restaurant Name | Rating | Address | Tel | Food | Price | Parking | Operating Time | Holiday | |
---|---|---|---|---|---|---|---|---|---|
0 | 이나니와요스케 | 4.4 | 서울시 중구 을지로1가 192-11 | 02-772-9994 | 라멘 / 소바 / 우동 | 20000 | 주차공간없음 | 11:00 - 23:00 | 일 |
1 | 바오차이 | 4.4 | 서울시 중구 을지로2가 203 | 02-6031-0107 | 정통 중식 / 일반 중식 | 30000 | 유료주차 가능 | 11:30 - 21:30 | 연중무휴 |
2 | 라칸티나 | 4.4 | 서울시 중구 을지로1가 50 | 02-777-2579 | 이탈리안 | 40000 | NaN | 월-토: 11:30 - 23:00 일: 17:30 - 23:00 | 연중무휴 |
3 | 라세느 | 4.3 | 서울시 중구 소공동 1 | 02-317-7171 | 뷔페 | 50000 | 발렛 | 06:00 - 22:00 | 연중무휴 |
4 | 산수갑산 | 4.3 | 서울시 중구 인현동1가 15-4 | 02-2275-6654 | 탕 / 찌개 / 전골 | 10000 | 유료주차 가능 | 월-금: 11:30 - 22:00 토: 11:30 - 20:00 | 일 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
395 | 누룩나무 | 4 | 서울시 종로구 관훈동 118-19 | 02-722-3398 | 전통 주점 / 포차 | 20000 | 주차공간없음 | 17:00 - 01:30 | 일 |
396 | 옴 | 4 | 서울시 종로구 신문로1가 2 | 02-723-4848 | 인도 음식 | 20000 | 주차공간없음 | 11:00 - 22:00 | 연중무휴 |
397 | 코블러 | 4 | 서울시 종로구 내자동 157 | 02-733-6421 | 칵테일 / 와인 | 20000 | 유료주차 가능 | 19:00 - 03:00 | 일 |
398 | 클류치 | 4 | 서울시 종로구 명륜3가 79-1 | 010-2702-1496 | 카페 / 디저트 | 10000 | 주차공간없음 | 월-토: 10:00 - 23:00 일: 11:00 - 20:00 | 연중무휴 |
399 | 도토리 | 4 | 서울시 종로구 안국동 24-1 | 02-6405-8153 | 기타 한식 | 10000 | 유료주차 가능 | 월-금: 10:30 - 21:00 토-일: 10:30 - 22:00 | 연중무휴 |
400 rows × 9 columns
In [31]:
# 'Rating'열의 고유 데이터 확인하기
df["Rating"].unique()
Out[31]:
array(['4.4', '4.3', '4.1', '4', '3.9', '3.8', '3.7', '3.6', '3.4', '3.3',
'3.2', '3.1', '2.7', '-', '4.7', '4.6', '4.5', '4.2'], dtype=object)
In [32]:
# 'Rating'열의 데이터 중 '-'->'0.0'로 변경하기 (str.replace()이용하기)
df["Rating"] = df["Rating"].str.replace("-","0.0")
In [33]:
# 'Rating'열의 데이터별 개수 확인하기
df["Rating"].value_counts()
Out[33]:
0.0 155
4 53
4.1 47
4.2 40
4.3 37
4.4 20
4.5 9
3.9 7
3.7 6
4.6 5
3.3 5
3.6 4
3.4 4
4.7 3
3.8 2
3.2 1
3.1 1
2.7 1
Name: Rating, dtype: int64
In [34]:
# 'Rating'열의 타입을 'float'로 변경하기
df["Rating"] =df["Rating"].astype("float")
In [35]:
# 'Rating'열의 데이터 타입 확인하기
df["Rating"].dtypes
Out[35]:
dtype('float64')
In [36]:
# 데이터프레임의 결측치 개수 확인하기
df.isnull().sum()
Out[36]:
Restaurant Name 0
Rating 0
Address 0
Tel 50
Food 0
Price 0
Parking 71
Operating Time 36
Holiday 0
dtype: int64
In [37]:
# 'Parking'열의 데이터별 개수 확인하기
df["Parking"].value_counts()
Out[37]:
주차공간없음 199
유료주차 가능 89
무료주차 가능 24
발렛 8
유료주차 가능 2시간 무료 3
무료주차 가능 2시간 무료 2
유료주차 가능 주차권 2시간 제공 1
무료주차 가능 당일 무료 1
유료주차 가능 1시간 무료 1
유료주차 가능 1.5시간 무료 1
Name: Parking, dtype: int64
In [38]:
# 'Parking'열의 결측치를 '주차공간없음'으로 변경하기
df["Parking"].fillna("주차공간없음",inplace=True)
In [40]:
# 'Parking'열의 결측치 개수 확인하기
df["Parking"].isnull().sum()
Out[40]:
0
맛집 데이터로 분석 가능여부 확인¶
In [41]:
# df확인
df
Out[41]:
Restaurant Name | Rating | Address | Tel | Food | Price | Parking | Operating Time | Holiday | |
---|---|---|---|---|---|---|---|---|---|
0 | 이나니와요스케 | 4.4 | 서울시 중구 을지로1가 192-11 | 02-772-9994 | 라멘 / 소바 / 우동 | 20000 | 주차공간없음 | 11:00 - 23:00 | 일 |
1 | 바오차이 | 4.4 | 서울시 중구 을지로2가 203 | 02-6031-0107 | 정통 중식 / 일반 중식 | 30000 | 유료주차 가능 | 11:30 - 21:30 | 연중무휴 |
2 | 라칸티나 | 4.4 | 서울시 중구 을지로1가 50 | 02-777-2579 | 이탈리안 | 40000 | 주차공간없음 | 월-토: 11:30 - 23:00 일: 17:30 - 23:00 | 연중무휴 |
3 | 라세느 | 4.3 | 서울시 중구 소공동 1 | 02-317-7171 | 뷔페 | 50000 | 발렛 | 06:00 - 22:00 | 연중무휴 |
4 | 산수갑산 | 4.3 | 서울시 중구 인현동1가 15-4 | 02-2275-6654 | 탕 / 찌개 / 전골 | 10000 | 유료주차 가능 | 월-금: 11:30 - 22:00 토: 11:30 - 20:00 | 일 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
395 | 누룩나무 | 4.0 | 서울시 종로구 관훈동 118-19 | 02-722-3398 | 전통 주점 / 포차 | 20000 | 주차공간없음 | 17:00 - 01:30 | 일 |
396 | 옴 | 4.0 | 서울시 종로구 신문로1가 2 | 02-723-4848 | 인도 음식 | 20000 | 주차공간없음 | 11:00 - 22:00 | 연중무휴 |
397 | 코블러 | 4.0 | 서울시 종로구 내자동 157 | 02-733-6421 | 칵테일 / 와인 | 20000 | 유료주차 가능 | 19:00 - 03:00 | 일 |
398 | 클류치 | 4.0 | 서울시 종로구 명륜3가 79-1 | 010-2702-1496 | 카페 / 디저트 | 10000 | 주차공간없음 | 월-토: 10:00 - 23:00 일: 11:00 - 20:00 | 연중무휴 |
399 | 도토리 | 4.0 | 서울시 종로구 안국동 24-1 | 02-6405-8153 | 기타 한식 | 10000 | 유료주차 가능 | 월-금: 10:30 - 21:00 토-일: 10:30 - 22:00 | 연중무휴 |
400 rows × 9 columns
In [42]:
# 'Price'열의 히스토그램 그리기
df["Price"].plot.hist()
Out[42]:
<AxesSubplot:ylabel='Frequency'>
In [54]:
# 'Parking'열의 데이터별 개수를 구하여 parking변수에 대입하기
parking = df["Parking"].value_counts()
parking
Out[54]:
주차공간없음 270
유료주차 가능 89
무료주차 가능 24
발렛 8
유료주차 가능 2시간 무료 3
무료주차 가능 2시간 무료 2
유료주차 가능 주차권 2시간 제공 1
무료주차 가능 당일 무료 1
유료주차 가능 1시간 무료 1
유료주차 가능 1.5시간 무료 1
Name: Parking, dtype: int64
In [56]:
import matplotlib.pyplot as plt
plt.rc("font", family = "Malgun Gothic")
In [57]:
# parking 데이터를 bar그래프로 표시하기
parking.plot.bar()
Out[57]:
<AxesSubplot:>
In [213]:
# 'Price'가 10000원 이하인 곳의 'Rating'를 찾아서 히스토그램으로 표시하기
df.loc[df["Price"]<=10000]["Rating"].plot.hist()
Out[213]:
<AxesSubplot:ylabel='Frequency'>
In [211]:
# 'Price'가 20000원 이상인 곳의 'Rating'를 찾아서 히스토그램으로 표시하기
df[df["Price"]>=20000]["Rating"].plot.hist()
Out[211]:
<AxesSubplot:ylabel='Frequency'>
In [212]:
# 'Price'가 40000원 이상인 곳의 'Rating'를 찾아서 히스토그램으로 표시하기
df[df["Price"]>=40000]["Rating"].plot.hist()
Out[212]:
<AxesSubplot:ylabel='Frequency'>
In [70]:
# 'Price'와 'Rating'의 관계를 scatter 플롯으로 표시하기
df.plot.scatter(x="Price", y="Rating")
Out[70]:
<AxesSubplot:xlabel='Price', ylabel='Rating'>
In [87]:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 400 entries, 0 to 399
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Restaurant Name 400 non-null object
1 Rating 400 non-null float64
2 Address 400 non-null object
3 Tel 350 non-null object
4 Food 400 non-null object
5 Price 400 non-null int64
6 Parking 400 non-null object
7 Operating Time 364 non-null object
8 Holiday 400 non-null object
dtypes: float64(1), int64(1), object(7)
memory usage: 28.2+ KB
In [208]:
# 'Rating'이 3이상이고 'Price'가 20000원 이하인 데이터만 찾아 df_star변수에 대입하기
df_star = df[(df["Rating"]>=3) & (df["Price"]<=20000)][["Rating","Price"]]
In [202]:
df_star
Out[202]:
Rating | Price | |
---|---|---|
4 | 4.3 | 10000 |
6 | 4.1 | 10000 |
7 | 4.1 | 10000 |
8 | 4.1 | 10000 |
10 | 4.1 | 10000 |
... | ... | ... |
390 | 4.0 | 10000 |
392 | 4.0 | 10000 |
393 | 4.0 | 10000 |
398 | 4.0 | 10000 |
399 | 4.0 | 10000 |
103 rows × 2 columns
In [210]:
# df_star의 ''Price'와 Rating'의 관계를 scatter 플롯으로 표시하기
df_star.plot.scatter(x="Price",y="Rating")
Out[210]:
<AxesSubplot:xlabel='Price', ylabel='Rating'>
In [135]:
# df의 인덱스르 'Food'열로 바꾸고 df_food에 대입한다.
# df_food의 'Rating','Price'열만 선택에 다시 df_food에 대입한다.
df_food = df.set_index("Food")
In [142]:
# df_food의 index를 구성하는 데이터의 개수를 확인한다.
df_food.index.value_counts()
Out[142]:
카페 / 디저트 68
고기 요리 42
탕 / 찌개 / 전골 25
한정식 / 백반 / 정통 한식 25
이탈리안 24
기타 한식 20
국수 / 면 요리 15
치킨 / 호프 / 펍 14
닭 / 오리 요리 13
베이커리 11
정통 중식 / 일반 중식 10
칵테일 / 와인 10
세계음식 기타 9
브런치 / 버거 / 샌드위치 9
정통 일식 / 일반 일식 8
해산물 요리 8
기타 중식 7
라멘 / 소바 / 우동 7
회 / 스시 6
돈부리 / 일본 카레 / 벤토 6
스테이크 / 바베큐 5
인도 음식 5
일반 주점 5
베트남 음식 5
기타 일식 4
기타 양식 4
퓨전 양식 4
태국 음식 4
까스 요리 4
프랑스 음식 4
다국적 아시아 음식 3
전통 주점 / 포차 3
뷔페 3
이자카야 / 오뎅 / 꼬치 2
남미 음식 2
퓨전 일식 2
퓨전 중식 2
딤섬 / 만두 1
패밀리 레스토랑 1
Name: Food, dtype: int64
In [147]:
# df_food에서 일식('라멘 / 소바 / 우동','정통 일식 / 일반 일식', '회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치')
# 메뉴들의 'Price'를 찾아 히스토그램을 그려본다.
pd.DataFrame(df_food.loc[['라멘 / 소바 / 우동','정통 일식 / 일반 일식','회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치']]["Price"])
Out[147]:
Price | |
---|---|
Food | |
라멘 / 소바 / 우동 | 20000 |
라멘 / 소바 / 우동 | 10000 |
라멘 / 소바 / 우동 | 10000 |
라멘 / 소바 / 우동 | 10000 |
라멘 / 소바 / 우동 | 10000 |
라멘 / 소바 / 우동 | 10000 |
라멘 / 소바 / 우동 | 10000 |
정통 일식 / 일반 일식 | 40000 |
정통 일식 / 일반 일식 | 10000 |
정통 일식 / 일반 일식 | 50000 |
정통 일식 / 일반 일식 | 50000 |
정통 일식 / 일반 일식 | 50000 |
정통 일식 / 일반 일식 | 20000 |
정통 일식 / 일반 일식 | 20000 |
정통 일식 / 일반 일식 | 20000 |
회 / 스시 | 40000 |
회 / 스시 | 30000 |
회 / 스시 | 30000 |
회 / 스시 | 50000 |
회 / 스시 | 20000 |
회 / 스시 | 30000 |
돈부리 / 일본 카레 / 벤토 | 10000 |
돈부리 / 일본 카레 / 벤토 | 10000 |
돈부리 / 일본 카레 / 벤토 | 20000 |
돈부리 / 일본 카레 / 벤토 | 20000 |
돈부리 / 일본 카레 / 벤토 | 20000 |
돈부리 / 일본 카레 / 벤토 | 10000 |
이자카야 / 오뎅 / 꼬치 | 20000 |
이자카야 / 오뎅 / 꼬치 | 30000 |
In [159]:
# df_food에서 일식('라멘 / 소바 / 우동','정통 일식 / 일반 일식', '회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치')
# 메뉴들의 'Rating'을 찾아 히스토그램을 그려본다.
df_food.loc[['라멘 / 소바 / 우동','정통 일식 / 일반 일식','회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치'],["Rating"]].plot.hist()
Out[159]:
<AxesSubplot:ylabel='Frequency'>
In [162]:
# df_food에서 일식('라멘 / 소바 / 우동','정통 일식 / 일반 일식', '회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치')
# 메뉴들의 'Price'과 'Rating'의 관계를 scatter 플롯으로 그려본다.
df_food.loc[['라멘 / 소바 / 우동','정통 일식 / 일반 일식','회 / 스시','돈부리 / 일본 카레 / 벤토', '이자카야 / 오뎅 / 꼬치'],["Price","Rating"]].plot.scatter(x="Price", y="Rating")
Out[162]:
<AxesSubplot:xlabel='Price', ylabel='Rating'>
🐼 데이터 분석할 데이터 csv 가지고 한번 해볼까나!
728x90
'😁 빅데이터 문제 풀기 & Study > - 이외 사이트 문제' 카테고리의 다른 글
[Pandas] Pandas 연습 문제 풀기 -6 🐼 (0) | 2022.02.23 |
---|---|
[Pandas] Pandas 연습 문제 풀기 -5 🐼 (0) | 2022.02.23 |
[Pandas] Pandas 연습 문제 풀기 -3 🐼 (0) | 2022.02.22 |
[Pandas] Pandas 연습 문제 풀기 - 2 🐼 (0) | 2022.02.21 |
[Pandas] Pandas 연습 문제 풀기 - 1 🐼 (0) | 2022.02.21 |