행=가로=ROW=HORIZONTAL=엑셀쉬트의 숫자 방향
행가(Hanger) + 가 로(ROW)라고 외우면 쉬울듯
행가로우~
열=세=COLUMN=VERTICAL=엑셀쉬트의 영어 방향
열세(쉽세) + 기둥(COLUMN)은 수직으로 서 있다고 외우면 쉬울듯
열세콜!
5. pandas
5-1 pandas와 DataFrame
numpy array : 복잡한 수학 연산을 할 때 사용
- 가독성이 떨어짐
- 정보에 대한 레이블 삽입 불가
- 한 가지 데이터 타입만 사용 가능
pandas : 표 형태의 데이터를 간편하게 다루고 싶을 때
- 데이터 불러오기
- 데이터 가공
- 데이터 분석
- 데이터 시각화
import pandas as pd
df = pd.DataFrame({
'category' : ['skirt', 'sweater', 'coat', 'jeans'],
'quantity' : [10, 15, 6, 11],
'price' : [30000, 60000, 95000, 35000]
})
df
category | quantity | price | |
---|---|---|---|
0 | skirt | 10 | 30000 |
1 | sweater | 15 | 60000 |
2 | coat | 6 | 95000 |
3 | jeans | 11 | 35000 |
df['quantity']
0 10
1 15
2 6
3 11
Name: quantity, dtype: int64
type(df['quantity'])
pandas.core.series.Series
df['quantity'].mean()
10.5
df['quantity'].sum()
42
df['quantity'].min()
6
df['quantity'] * df['price']
0 300000
1 900000
2 570000
3 385000
dtype: int64
5-2 DataFrame을 만드는 다양한 방법
이번 레슨에서는 DataFrame을 만드는 다양한 방법에 대해 알아보도록 하겠습니다. 일단 아래와 같이 NumPy와 pandas 라이브러리를 불러올게요.
import pandas as pd
import numpy as np
그리고 지난 시간에 배운 것처럼 pd.DataFrame() 안에 DataFrame으로 만들 재료를 넣어 주면 되는데요. 이때, 아래와 같이 딕셔너리를 넣기도 하지만, 리스트나 NumPy array를 넣을 수도 있습니다.
dict_df = pd.DataFrame({
'category': ['skirt', 'sweater', 'coat', 'jeans'],
'quantity': [10, 15, 6, 11],
'price': [30000, 60000, 95000, 35000]
})
그러면 이번엔 2차원 리스트와 2차원 NumPy array를 가지고 DataFrame을 만들어 볼게요. 아래 코드를 보면, two_dimensional_list라는 2차원 리스트(list of lists)를 가지고 list_df를 만들었고 two_dimensional_array라는 2차원 NumPy array를 가지고 array_df를 만들었습니다.
two_dimensional_list = [
['skirt', 10, 30000],
['sweater', 15, 60000],
['coat', 6, 95000],
['jeans', 11, 35000]
]
two_dimensional_array = np.array(two_dimensional_list)
list_df = pd.DataFrame(two_dimensional_list)
array_df = pd.DataFrame(two_dimensional_array)
이렇게 만든 list_df와 array_df를 출력해 보면, 둘다 아래와 같은 결과물이 나오는데요. DataFrame을 만들 때 컬럼의 이름을 따로 설정하지 않았기 때문에, 컬럼 자리에 그냥 0부터 시작하는 숫자값이 들어 있습니다. 이러면 각 컬럼이 무엇을 의미하는 지 알 수 없어서 불편하겠죠?
DataFrame을 만들 때 columns라는 옵션을 사용해서 컬럼명을 설정하는 것도 가능합니다.
list_df = pd.DataFrame(two_dimensional_list, columns=['category', 'quantity', 'price'])
array_df = pd.DataFrame(two_dimensional_array, columns=['category', 'quantity', 'price'])
위와 같이 컬럼명을 설정한 뒤 다시 list_df와 array_df를 출력해 보면, 컬럼명이 아래 이미지처럼 잘 바뀌어 있는 것을 확인할 수 있죠.
마지막으로, 딕셔너리가 담겨 있는 리스트로 DataFrame을 만들 수도 있는데요. 아래 코드에서는 dict_list라는 리스트를 가지고 dict_list_df라는 DataFrame을 만들었습니다. 이것 또한 위에서 만든 DataFrame과 동일한 형태를 가지고 있죠.
dict_list = [
{'category': 'skirt', 'quantity': 10, 'price': 30000},
{'category': 'sweater', 'quantity': 15, 'price': 60000},
{'category': 'coat', 'quantity': 6, 'price': 95000},
{'category': 'jeans', 'quantity': 11, 'price': 35000}
]
df4 = pd.DataFrame(dict_list)
지금까지 DataFrame을 만드는 여러 가지 방법을 알아봤는데요. 이번 레슨에서 배운 내용을 모두 외울 필요는 없지만, 코드를 보고 대략 어떤 형태의 DataFrame이 만들어지는지 이해할 수 있다면 앞으로 데이터 분야를 학습하실 때 많은 도움이 될 겁니다.
5-3 데이터 불러오기
CSV 파일 : Comma - Separated Values
: 값들은 쉼표로 나뉘어져 있다
import pandas as pd
burger_df = pd.read_csv("data/burger.csv", index_col = 1) # burger.csv 파일을 읽고 index_col 버전을 1 버전으로 진행
burger_df
product_name | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
calories | ||||||
660 | Whopper | 49 | 28 | 40 | 1.0 | Burgers |
740 | Cheese Whopper | 50 | 32 | 46 | 1.3 | Burgers |
900 | Double Whopper | 49 | 48 | 58 | 1.0 | Burgers |
980 | Double Cheese Whopper | 50 | 52 | 64 | 1.4 | Burgers |
310 | Whopper Junior | 27 | 13 | 18 | 0.4 | Burgers |
1150 | Bacon King | 49 | 61 | 79 | 2.2 | Burgers |
700 | Single Stacker King | 48 | 35 | 42 | 1.4 | Burgers |
1050 | Double Stacker King | 49 | 61 | 68 | NaN | Burgers |
240 | Hamburger | 26 | 13 | 10 | 0.4 | Burgers |
280 | Cheeseburger | 27 | 15 | 13 | 0.6 | Burgers |
350 | Double Hamburger | 26 | 21 | 18 | 0.4 | Burgers |
390 | Double Cheeseburger | 27 | 23 | 21 | 0.6 | Burgers |
670 | Crispy Chicken | 54 | 23 | 41 | 1.1 | Chicken |
170 | Chicken Nuggets | 11 | 8 | 11 | 0.3 | Chicken |
210 | Spicy Chicken Nuggets | 11 | 8 | 15 | 0.6 | Chicken |
burger_df = pd.read_csv("data/burger.csv", header = None, # 헤더를 none으로 만들면 01234 순서로 됨
names = ["product_name", "calories", "carb", "protein", "fat", "sodium", "category"]) # 헤더 none에 이름을 지정해줌
burger_df
product_name | calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|---|
0 | product_name | calories | carb | protein | fat | sodium | category |
1 | Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
2 | Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
3 | Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
4 | Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
5 | Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
6 | Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
7 | Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
8 | Double Stacker King | 1050 | 49 | 61 | 68 | NaN | Burgers |
9 | Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
10 | Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
11 | Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
12 | Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
13 | Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
14 | Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
15 | Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
5-4 프리미어 리그 데이터 탐색하기
int64 뜻
- int : 이 데이터가 정수형
- 뒤의 숫자 : 데이터를 표현하기 위해 사용하는 저장 공간의 크기(bit)
5-5 DataFrame에서 일부만 선택하기
- iloc : inter location, 즉 정수 값의 인덱스를 통해서 데이터를 받아옴
- loc : location, 위치를 통해서 데이터를 받아온다
- 그냥 대괄호 쓰는 방식
import pandas as pd
burger_df = pd.read_csv("data/burger.csv", index_col = 0) # burger.csv 파일을 읽고 index_col 버전을 1 버전으로 진행
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | NaN | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.iloc[3, 1] # iloc 쓰는 방식 = [로우, 컬럼]
50
burger_df.iloc[[2, 3], [1, 2]] # 로우 2,3 컬럼 1,2 데이터를 가져오고 싶다
carb | protein | |
---|---|---|
product_name | ||
Double Whopper | 49 | 48 |
Double Cheese Whopper | 50 | 52 |
burger_df.iloc[1:4, :3] # 로우 1,2,3 컬럼 0,1,2
calories | carb | protein | |
---|---|---|---|
product_name | |||
Cheese Whopper | 740 | 50 | 32 |
Double Whopper | 900 | 49 | 48 |
Double Cheese Whopper | 980 | 50 | 52 |
burger_df.iloc[1:4]
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
burger_df.loc['Double Whopper', 'protein'] # loc 쓰는 방식 : iloc과는 다르게 loc은 이름을 사용
48
burger_df.loc[['Whopper', 'Double Whopper'], 'protein']
product_name
Whopper 28
Double Whopper 48
Name: protein, dtype: int64
burger_df.loc[['Whopper', 'Double Whopper'], ['carb', 'protein', 'fat']]
carb | protein | fat | |
---|---|---|---|
product_name | |||
Whopper | 49 | 28 | 40 |
Double Whopper | 49 | 48 | 58 |
burger_df.loc['Double Whopper':'Bacon King', 'calories':'fat']
calories | carb | protein | fat | |
---|---|---|---|---|
product_name | ||||
Double Whopper | 900 | 49 | 48 | 58 |
Double Cheese Whopper | 980 | 50 | 52 | 64 |
Whopper Junior | 310 | 27 | 13 | 18 |
Bacon King | 1150 | 49 | 61 | 79 |
burger_df.loc['Double Whopper':'Bacon King']
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
burger_df['calories']
product_name
Whopper 660
Cheese Whopper 740
Double Whopper 900
Double Cheese Whopper 980
Whopper Junior 310
Bacon King 1150
Single Stacker King 700
Double Stacker King 1050
Hamburger 240
Cheeseburger 280
Double Hamburger 350
Double Cheeseburger 390
Crispy Chicken 670
Chicken Nuggets 170
Spicy Chicken Nuggets 210
Name: calories, dtype: int64
burger_df[['calories', 'fat']]
calories | fat | |
---|---|---|
product_name | ||
Whopper | 660 | 40 |
Cheese Whopper | 740 | 46 |
Double Whopper | 900 | 58 |
Double Cheese Whopper | 980 | 64 |
Whopper Junior | 310 | 18 |
Bacon King | 1150 | 79 |
Single Stacker King | 700 | 42 |
Double Stacker King | 1050 | 68 |
Hamburger | 240 | 10 |
Cheeseburger | 280 | 13 |
Double Hamburger | 350 | 18 |
Double Cheeseburger | 390 | 21 |
Crispy Chicken | 670 | 41 |
Chicken Nuggets | 170 | 11 |
Spicy Chicken Nuggets | 210 | 15 |
burger_df['Double Whopper':'Bacon King'] # 그냥 대괄호 쓰는 방식
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
5-7 DataFrame과 불린 인덱싱
type(burger_df['calories'] < 500)
pandas.core.series.Series
burger_df.loc[burger_df['calories'] < 500] # True였던 메뉴만 필터링되어 나옴 중요!
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.loc[burger_df['calories'] < 500, ['carb', 'protein']]
carb | protein | |
---|---|---|
product_name | ||
Whopper Junior | 27 | 13 |
Hamburger | 26 | 13 |
Cheeseburger | 27 | 15 |
Double Hamburger | 26 | 21 |
Double Cheeseburger | 27 | 23 |
Chicken Nuggets | 11 | 8 |
Spicy Chicken Nuggets | 11 | 8 |
burger_df.loc[burger_df['calories'] < 500, 'calories':'fat']
calories | carb | protein | fat | |
---|---|---|---|---|
product_name | ||||
Whopper Junior | 310 | 27 | 13 | 18 |
Hamburger | 240 | 26 | 13 | 10 |
Cheeseburger | 280 | 27 | 15 | 13 |
Double Hamburger | 350 | 26 | 21 | 18 |
Double Cheeseburger | 390 | 27 | 23 | 21 |
Chicken Nuggets | 170 | 11 | 8 | 11 |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 |
mask = burger_df['calories'] < 500 # 변수 지정
burger_df[mask]
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.loc[mask, 'calories':'fat']
calories | carb | protein | fat | |
---|---|---|---|---|
product_name | ||||
Whopper Junior | 310 | 27 | 13 | 18 |
Hamburger | 240 | 26 | 13 | 10 |
Cheeseburger | 280 | 27 | 15 | 13 |
Double Hamburger | 350 | 26 | 21 | 18 |
Double Cheeseburger | 390 | 27 | 23 | 21 |
Chicken Nuggets | 170 | 11 | 8 | 11 |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 |
5-9 데이터 수정 및 추가하기
import pandas as pd
burger_df = pd.read_csv("data/burger.csv", index_col = 0) # burger.csv 파일을 읽고 index_col 버전을 1 버전으로 진행
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | NaN | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.loc["Double Stacker King", "sodium"]
nan
burger_df.loc["Double Stacker King", "sodium"] = 1.9
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.9 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.loc["Cheeseburger"] # Cheeseburger 출력
calories 280
carb 27
protein 15
fat 13
sodium 0.6
category Burgers
Name: Cheeseburger, dtype: object
burger_df.loc["Cheeseburger"] = [360, 24, 18, 21, 0.7, 'Burger'] # Cheeseburger 한 줄을 통째로 바꿈
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.9 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
Cheeseburger | 360 | 24 | 18 | 21 | 0.7 | Burger |
Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df['sodium']
product_name
Whopper 1.0
Cheese Whopper 1.3
Double Whopper 1.0
Double Cheese Whopper 1.4
Whopper Junior 0.4
Bacon King 2.2
Single Stacker King 1.4
Double Stacker King 1.9
Hamburger 0.4
Cheeseburger 0.7
Double Hamburger 0.4
Double Cheeseburger 0.6
Crispy Chicken 1.1
Chicken Nuggets 0.3
Spicy Chicken Nuggets 0.6
Name: sodium, dtype: float64
burger_df['sodium'] = [1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5]
burger_df['sodium']
product_name
Whopper 1.1
Cheese Whopper 1.2
Double Whopper 1.3
Double Cheese Whopper 1.4
Whopper Junior 1.5
Bacon King 1.6
Single Stacker King 1.7
Double Stacker King 1.8
Hamburger 1.9
Cheeseburger 2.0
Double Hamburger 2.1
Double Cheeseburger 2.2
Crispy Chicken 2.3
Chicken Nuggets 2.4
Spicy Chicken Nuggets 2.5
Name: sodium, dtype: float64
burger_df['sodium'] = 1
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 1 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 1 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | 1 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 1 | Burgers |
Cheeseburger | 360 | 24 | 18 | 21 | 1 | Burger |
Double Hamburger | 350 | 26 | 21 | 18 | 1 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 1 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 1 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 1 | Chicken |
burger_df.loc['Tripple Whopper'] = [1130, 49, 67, 75, 1.1, 'Burger'] # 새로운 행이 추가됨
burger_df
calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|
product_name | ||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.0 | Burgers |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.0 | Burgers |
Whopper Junior | 310 | 27 | 13 | 18 | 1.0 | Burgers |
Bacon King | 1150 | 49 | 61 | 79 | 1.0 | Burgers |
Single Stacker King | 700 | 48 | 35 | 42 | 1.0 | Burgers |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.0 | Burgers |
Hamburger | 240 | 26 | 13 | 10 | 1.0 | Burgers |
Cheeseburger | 360 | 24 | 18 | 21 | 1.0 | Burger |
Double Hamburger | 350 | 26 | 21 | 18 | 1.0 | Burgers |
Double Cheeseburger | 390 | 27 | 23 | 21 | 1.0 | Burgers |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.0 | Chicken |
Chicken Nuggets | 170 | 11 | 8 | 11 | 1.0 | Chicken |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 1.0 | Chicken |
Tripple Whopper | 1130 | 49 | 67 | 75 | 1.1 | Burger |
burger_df['brand'] = 'Burger King' # 새로운 열이 추가됨
burger_df
calories | carb | protein | fat | sodium | category | brand | |
---|---|---|---|---|---|---|---|
product_name | |||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers | Burger King |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.0 | Burgers | Burger King |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers | Burger King |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.0 | Burgers | Burger King |
Whopper Junior | 310 | 27 | 13 | 18 | 1.0 | Burgers | Burger King |
Bacon King | 1150 | 49 | 61 | 79 | 1.0 | Burgers | Burger King |
Single Stacker King | 700 | 48 | 35 | 42 | 1.0 | Burgers | Burger King |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.0 | Burgers | Burger King |
Hamburger | 240 | 26 | 13 | 10 | 1.0 | Burgers | Burger King |
Cheeseburger | 360 | 24 | 18 | 21 | 1.0 | Burger | Burger King |
Double Hamburger | 350 | 26 | 21 | 18 | 1.0 | Burgers | Burger King |
Double Cheeseburger | 390 | 27 | 23 | 21 | 1.0 | Burgers | Burger King |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.0 | Chicken | Burger King |
Chicken Nuggets | 170 | 11 | 8 | 11 | 1.0 | Chicken | Burger King |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 1.0 | Chicken | Burger King |
Tripple Whopper | 1130 | 49 | 67 | 75 | 1.1 | Burger | Burger King |
burger_df.loc[burger_df['calories'] >= 500] # calories 열을 받아오고 500 이상인 경우
calories | carb | protein | fat | sodium | category | brand | |
---|---|---|---|---|---|---|---|
product_name | |||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers | Burger King |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.0 | Burgers | Burger King |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers | Burger King |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.0 | Burgers | Burger King |
Bacon King | 1150 | 49 | 61 | 79 | 1.0 | Burgers | Burger King |
Single Stacker King | 700 | 48 | 35 | 42 | 1.0 | Burgers | Burger King |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.0 | Burgers | Burger King |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.0 | Chicken | Burger King |
Tripple Whopper | 1130 | 49 | 67 | 75 | 1.1 | Burger | Burger King |
burger_df.loc[burger_df['calories'] >= 500, 'high_calorie'] = True # 500 이상은 high calorie = True
burger_df.loc[burger_df['calories'] < 500, 'high_calorie'] = False # 500 이하는 high_calorie = False
burger_df
calories | carb | protein | fat | sodium | category | brand | high_calorie | |
---|---|---|---|---|---|---|---|---|
product_name | ||||||||
Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers | Burger King | True |
Cheese Whopper | 740 | 50 | 32 | 46 | 1.0 | Burgers | Burger King | True |
Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers | Burger King | True |
Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.0 | Burgers | Burger King | True |
Whopper Junior | 310 | 27 | 13 | 18 | 1.0 | Burgers | Burger King | False |
Bacon King | 1150 | 49 | 61 | 79 | 1.0 | Burgers | Burger King | True |
Single Stacker King | 700 | 48 | 35 | 42 | 1.0 | Burgers | Burger King | True |
Double Stacker King | 1050 | 49 | 61 | 68 | 1.0 | Burgers | Burger King | True |
Hamburger | 240 | 26 | 13 | 10 | 1.0 | Burgers | Burger King | False |
Cheeseburger | 360 | 24 | 18 | 21 | 1.0 | Burger | Burger King | False |
Double Hamburger | 350 | 26 | 21 | 18 | 1.0 | Burgers | Burger King | False |
Double Cheeseburger | 390 | 27 | 23 | 21 | 1.0 | Burgers | Burger King | False |
Crispy Chicken | 670 | 54 | 23 | 41 | 1.0 | Chicken | Burger King | True |
Chicken Nuggets | 170 | 11 | 8 | 11 | 1.0 | Chicken | Burger King | False |
Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 1.0 | Chicken | Burger King | False |
Tripple Whopper | 1130 | 49 | 67 | 75 | 1.1 | Burger | Burger King | True |
5-11 pandas에서 그래프 그리기
import pandas as pd
import matplotlib.pyplot as plt
sales_df = pd.DataFrame({
'quarter' : ['10', '20', '30', '40'],
'revenue' : [1360, 2650, 2070, 4150],
'cost' : [1240, 1970, 1750, 2760]
})
sales_df
quarter | revenue | cost | |
---|---|---|---|
0 | 10 | 1360 | 1240 |
1 | 20 | 2650 | 1970 |
2 | 30 | 2070 | 1750 |
3 | 40 | 4150 | 2760 |
plt.plot(sales_df['quarter'], sales_df['revenue'])
plt.show()
sales_df.plot()
plt.show()
sales_df.plot(x='quarter', y='revenue')
plt.show()
sales_df.plot(x='quarter', y='revenue', kind='bar')
plt.show()
sales_df.plot(y='revenue', kind='pie', labels= ['1Q', '2Q', '3Q', '4Q'])
plt.show()
burger_df = pd.read_csv('data/burger.csv')
burger_df
product_name | calories | carb | protein | fat | sodium | category | |
---|---|---|---|---|---|---|---|
0 | Whopper | 660 | 49 | 28 | 40 | 1.0 | Burgers |
1 | Cheese Whopper | 740 | 50 | 32 | 46 | 1.3 | Burgers |
2 | Double Whopper | 900 | 49 | 48 | 58 | 1.0 | Burgers |
3 | Double Cheese Whopper | 980 | 50 | 52 | 64 | 1.4 | Burgers |
4 | Whopper Junior | 310 | 27 | 13 | 18 | 0.4 | Burgers |
5 | Bacon King | 1150 | 49 | 61 | 79 | 2.2 | Burgers |
6 | Single Stacker King | 700 | 48 | 35 | 42 | 1.4 | Burgers |
7 | Double Stacker King | 1050 | 49 | 61 | 68 | NaN | Burgers |
8 | Hamburger | 240 | 26 | 13 | 10 | 0.4 | Burgers |
9 | Cheeseburger | 280 | 27 | 15 | 13 | 0.6 | Burgers |
10 | Double Hamburger | 350 | 26 | 21 | 18 | 0.4 | Burgers |
11 | Double Cheeseburger | 390 | 27 | 23 | 21 | 0.6 | Burgers |
12 | Crispy Chicken | 670 | 54 | 23 | 41 | 1.1 | Chicken |
13 | Chicken Nuggets | 170 | 11 | 8 | 11 | 0.3 | Chicken |
14 | Spicy Chicken Nuggets | 210 | 11 | 8 | 15 | 0.6 | Chicken |
burger_df.plot(x='fat', y='calories', kind='scatter') # 산점
plt.show()
'데이터 사이언스 > 인강' 카테고리의 다른 글
[코드잇] DataFrame 마스터하기 (2) | 2024.09.09 |
---|---|
[코드잇] 데이터 사이언스 수료증들 (0) | 2024.09.09 |
[코드잇] 데이터 사이언스 Toolkit 3. Matplotlib (0) | 2024.08.07 |
[코드잇] 데이터 사이언스 Toolkit 2. Numpy (0) | 2024.08.07 |
[코드잇] 기초 통계와 데이터 시각화 (0) | 2024.08.05 |