<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
Pandas 시작하기¶
inport pandas
통해서 진행
In [1]:
import pandas as pd
In [3]:
s = pd.Series([1,4,9,16,26])
print(s)
0 1
1 4
2 9
3 16
4 26
dtype: int64
In [5]:
t = pd.Series({'one' :1, 'two' :2, 'three' :3, 'four' :4})
print(t)
one 1
two 2
three 3
four 4
dtype: int64
Series + Numpy¶
- Series는 ndarray와 유사하다!
In [6]:
s[1]
Out[6]:
4
In [8]:
t[1]
Out[8]:
2
In [11]:
t[1:3]
Out[11]:
two 2
three 3
dtype: int64
In [13]:
s[s > s.median()] # 인덱싱에 조건을 넣을 수 있음
# 자기 자신의 median(중앙값)보다 큰 값만 가지고 와라
Out[13]:
3 16
4 26
dtype: int64
In [17]:
s[[3,1,4]] # 3, 1, 4 인덱스의 순서로 나열함`
Out[17]:
3 16
1 4
4 26
dtype: int64
In [20]:
import numpy as np
np.exp(s) # 지수함수에 (e^x) 들어가도록
Out[20]:
0 2.718282e+00
1 5.459815e+01
2 8.103084e+03
3 8.886111e+06
4 1.957296e+11
dtype: float64
In [22]:
s.dtype
Out[22]:
dtype('int64')
Series + dict¶
- series는 dict와 유사하다.
In [24]:
t
Out[24]:
one 1
two 2
three 3
four 4
dtype: int64
In [25]:
t['one']
Out[25]:
1
In [26]:
# Series 에 값 추가하기
t['six'] = 6
t
Out[26]:
one 1
two 2
three 3
four 4
six 6
dtype: int64
In [27]:
'six' in t # Series 에 존쟈유무를 확인가능
Out[27]:
True
In [28]:
'seven' in t
Out[28]:
False
In [30]:
# t['seven'] # 키에러 발생
In [31]:
t.get('seven') # seven 이 있으면 밸류룰 반환 없으면 반환 x
In [33]:
t.get('seven',0) # seven 있으면 밸류 반환, 없으면 '0' 반환
Out[33]:
0
Series에 이름 붙이기¶
name
속성을 가지고 있다.- 처음 Series를 만들 때 이름을 붙일 수 있습니다.
In [78]:
s = pd.Series(np.random.randn(5), name= "random_nums")
s # 이제 name 속성이 생김
Out[78]:
0 -0.562483
1 -0.446511
2 -0.759704
3 -0.120796
4 -0.030057
Name: random_nums, dtype: float64
In [86]:
s.name = "임의의 난수"
In [88]:
s # 이름을 바꿀 수도 있다.
Out[88]:
0 -0.562483
1 -0.446511
2 -0.759704
3 -0.120796
4 -0.030057
Name: 임의의 난수, dtype: float64
In [90]:
d = {'height': [1, 2, 3, 4], 'weight': [30, 40, 50, 60]}
df = pd.DataFrame(d)
df
Out[90]:
height | weight | |
---|---|---|
0 | 1 | 30 |
1 | 2 | 40 |
2 | 3 | 50 |
3 | 4 | 60 |
In [91]:
## dtype 확인
## pandas 는 여러가지 데이터값을 가질 수 있기에, dtype 대신 dtypes를 쓸 수 있음
df.dtypes
Out[91]:
height int64
weight int64
dtype: object
From CSV to dataframe¶
- Comma Separated Value(CSV)를 DataFrame으로 생성해줄 수 있다
.read_csv()
를 이용
In [93]:
# 동일 경로에 ~.csv 파일이 있다면:
covid = pd.read_csv("./country_wise_latest.csv")
covid
Out[93]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | 36263 | 1269 | 25198 | 9796 | 106 | 10 | 18 | 3.50 | 69.49 | 5.04 | 35526 | 737 | 2.07 | Eastern Mediterranean |
1 | Albania | 4880 | 144 | 2745 | 1991 | 117 | 6 | 63 | 2.95 | 56.25 | 5.25 | 4171 | 709 | 17.00 | Europe |
2 | Algeria | 27973 | 1163 | 18837 | 7973 | 616 | 8 | 749 | 4.16 | 67.34 | 6.17 | 23691 | 4282 | 18.07 | Africa |
3 | Andorra | 907 | 52 | 803 | 52 | 10 | 0 | 0 | 5.73 | 88.53 | 6.48 | 884 | 23 | 2.60 | Europe |
4 | Angola | 950 | 41 | 242 | 667 | 18 | 1 | 0 | 4.32 | 25.47 | 16.94 | 749 | 201 | 26.84 | Africa |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
182 | West Bank and Gaza | 10621 | 78 | 3752 | 6791 | 152 | 2 | 0 | 0.73 | 35.33 | 2.08 | 8916 | 1705 | 19.12 | Eastern Mediterranean |
183 | Western Sahara | 10 | 1 | 8 | 1 | 0 | 0 | 0 | 10.00 | 80.00 | 12.50 | 10 | 0 | 0.00 | Africa |
184 | Yemen | 1691 | 483 | 833 | 375 | 10 | 4 | 36 | 28.56 | 49.26 | 57.98 | 1619 | 72 | 4.45 | Eastern Mediterranean |
185 | Zambia | 4552 | 140 | 2815 | 1597 | 71 | 1 | 465 | 3.08 | 61.84 | 4.97 | 3326 | 1226 | 36.86 | Africa |
186 | Zimbabwe | 2704 | 36 | 542 | 2126 | 192 | 2 | 24 | 1.33 | 20.04 | 6.64 | 1713 | 991 | 57.85 | Africa |
187 rows × 15 columns
Pandas 활용 1. 일부분만 관찰하기¶
head(n)
: 처음 n개의 데이터 참조
In [94]:
# 위에서부터 5개를 관찰하는 방법(함수)
covid.head(5)
Out[94]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | 36263 | 1269 | 25198 | 9796 | 106 | 10 | 18 | 3.50 | 69.49 | 5.04 | 35526 | 737 | 2.07 | Eastern Mediterranean |
1 | Albania | 4880 | 144 | 2745 | 1991 | 117 | 6 | 63 | 2.95 | 56.25 | 5.25 | 4171 | 709 | 17.00 | Europe |
2 | Algeria | 27973 | 1163 | 18837 | 7973 | 616 | 8 | 749 | 4.16 | 67.34 | 6.17 | 23691 | 4282 | 18.07 | Africa |
3 | Andorra | 907 | 52 | 803 | 52 | 10 | 0 | 0 | 5.73 | 88.53 | 6.48 | 884 | 23 | 2.60 | Europe |
4 | Angola | 950 | 41 | 242 | 667 | 18 | 1 | 0 | 4.32 | 25.47 | 16.94 | 749 | 201 | 26.84 | Africa |
tail(n)
: 마지막 n개의 데이터를 참조
In [96]:
# 아래에서부터 5개를 관찰하는 방법(함수)
covid.tail(5)
Out[96]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
182 | West Bank and Gaza | 10621 | 78 | 3752 | 6791 | 152 | 2 | 0 | 0.73 | 35.33 | 2.08 | 8916 | 1705 | 19.12 | Eastern Mediterranean |
183 | Western Sahara | 10 | 1 | 8 | 1 | 0 | 0 | 0 | 10.00 | 80.00 | 12.50 | 10 | 0 | 0.00 | Africa |
184 | Yemen | 1691 | 483 | 833 | 375 | 10 | 4 | 36 | 28.56 | 49.26 | 57.98 | 1619 | 72 | 4.45 | Eastern Mediterranean |
185 | Zambia | 4552 | 140 | 2815 | 1597 | 71 | 1 | 465 | 3.08 | 61.84 | 4.97 | 3326 | 1226 | 36.86 | Africa |
186 | Zimbabwe | 2704 | 36 | 542 | 2126 | 192 | 2 | 24 | 1.33 | 20.04 | 6.64 | 1713 | 991 | 57.85 | Africa |
Pandas 활용 2. 데이터 접근하기¶
df['column_name']
ordf.column_name
.
In [98]:
covid['Active']
Out[98]:
0 9796
1 1991
2 7973
3 52
4 667
...
182 6791
183 1
184 375
185 1597
186 2126
Name: Active, Length: 187, dtype: int64
In [99]:
covid.Active
Out[99]:
0 9796
1 1991
2 7973
3 52
4 667
...
182 6791
183 1
184 375
185 1597
186 2126
Name: Active, Length: 187, dtype: int64
두 방식의 차이점¶
covid['~'] 방식과 covid. ~ 방식에서
~ 에 띄어쓰기가 있는 경우, 후자에서는 에러가 난다
Honey Tip!¶
DataFrame의 각 column은 'Series'다!
In [101]:
covid['Confirmed'][0]
Out[101]:
36263
In [102]:
covid['Confirmed'][1:5]
Out[102]:
1 4880
2 27973
3 907
4 950
Name: Confirmed, dtype: int64
Pandas 활용 3. 조건을 이용해서 데이터 접근하기¶
In [105]:
# 신규 확진자가 100명이 넘는 나라를 찾아보자!
covid['New cases'] > 100
Out[105]:
0 True
1 True
2 True
3 False
4 False
...
182 True
183 False
184 False
185 False
186 True
Name: New cases, Length: 187, dtype: bool
In [107]:
covid[covid['New cases'] > 100].head(5) # true인 국가를 찾을 수 있겠구나
Out[107]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | 36263 | 1269 | 25198 | 9796 | 106 | 10 | 18 | 3.50 | 69.49 | 5.04 | 35526 | 737 | 2.07 | Eastern Mediterranean |
1 | Albania | 4880 | 144 | 2745 | 1991 | 117 | 6 | 63 | 2.95 | 56.25 | 5.25 | 4171 | 709 | 17.00 | Europe |
2 | Algeria | 27973 | 1163 | 18837 | 7973 | 616 | 8 | 749 | 4.16 | 67.34 | 6.17 | 23691 | 4282 | 18.07 | Africa |
6 | Argentina | 167416 | 3059 | 72575 | 91782 | 4890 | 120 | 2057 | 1.83 | 43.35 | 4.21 | 130774 | 36642 | 28.02 | Americas |
8 | Australia | 15303 | 167 | 9311 | 5825 | 368 | 6 | 137 | 1.09 | 60.84 | 1.79 | 12428 | 2875 | 23.13 | Western Pacific |
In [110]:
# WHO 지역(WHO Region)이 동남아시아인 나라 찾기
covid['WHO Region'].unique() # 범주형 자료에서 범주를 유니크하게 보여준다
Out[110]:
array(['Eastern Mediterranean', 'Europe', 'Africa', 'Americas',
'Western Pacific', 'South-East Asia'], dtype=object)
In [113]:
covid[covid['WHO Region']== 'South-East Asia']
Out[113]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13 | Bangladesh | 226225 | 2965 | 125683 | 97577 | 2772 | 37 | 1801 | 1.31 | 55.56 | 2.36 | 207453 | 18772 | 9.05 | South-East Asia |
19 | Bhutan | 99 | 0 | 86 | 13 | 4 | 0 | 1 | 0.00 | 86.87 | 0.00 | 90 | 9 | 10.00 | South-East Asia |
27 | Burma | 350 | 6 | 292 | 52 | 0 | 0 | 2 | 1.71 | 83.43 | 2.05 | 341 | 9 | 2.64 | South-East Asia |
79 | India | 1480073 | 33408 | 951166 | 495499 | 44457 | 637 | 33598 | 2.26 | 64.26 | 3.51 | 1155338 | 324735 | 28.11 | South-East Asia |
80 | Indonesia | 100303 | 4838 | 58173 | 37292 | 1525 | 57 | 1518 | 4.82 | 58.00 | 8.32 | 88214 | 12089 | 13.70 | South-East Asia |
106 | Maldives | 3369 | 15 | 2547 | 807 | 67 | 0 | 19 | 0.45 | 75.60 | 0.59 | 2999 | 370 | 12.34 | South-East Asia |
119 | Nepal | 18752 | 48 | 13754 | 4950 | 139 | 3 | 626 | 0.26 | 73.35 | 0.35 | 17844 | 908 | 5.09 | South-East Asia |
158 | Sri Lanka | 2805 | 11 | 2121 | 673 | 23 | 0 | 15 | 0.39 | 75.61 | 0.52 | 2730 | 75 | 2.75 | South-East Asia |
167 | Thailand | 3297 | 58 | 3111 | 128 | 6 | 0 | 2 | 1.76 | 94.36 | 1.86 | 3250 | 47 | 1.45 | South-East Asia |
168 | Timor-Leste | 24 | 0 | 0 | 24 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 24 | 0 | 0.00 | South-East Asia |
Pandas 활용 4. 행을 기준으로 데이터 접근하기¶
In [116]:
# 예시 데이터 - 도서관 정보
books_dict = {'Available' : [True, True, False], 'Location':[102,205,323], 'Genre':['Programming', 'Physics', 'Math']}
books_df = pd.DataFrame(books_dict, index= ['버그란 무엇인가','두근두근 물리학','미분해줘 홈즈'])
books_df
Out[116]:
Available | Location | Genre | |
---|---|---|---|
버그란 무엇인가 | True | 102 | Programming |
두근두근 물리학 | True | 205 | Physics |
미분해줘 홈즈 | False | 323 | Math |
인덱스를 이용해서 가져오기: .loc[row, col]
¶
In [117]:
books_df.loc['버그란 무엇인가']
Out[117]:
Available True
Location 102
Genre Programming
Name: 버그란 무엇인가, dtype: object
In [119]:
type(books_df.loc['버그란 무엇인가']) # 얘 또한 시리즈임
Out[119]:
pandas.core.series.Series
In [120]:
# '미분해줘 홈즈 책이 대출가능한지'
books_df.loc["미분해줘 홈즈"]['Available']
Out[120]:
False
In [121]:
books_df.loc["미분해줘 홈즈",'Available']
Out[121]:
False
숫자 인덱스를 이용해서 가져오기 : .iloc[rowidx, colidx]
¶
순수 데이터의 위치를 가지고 가져올 수 있음
In [122]:
# 인덱스 0행 인덱스 1열 가지고오기
books_df.iloc[0,1]
Out[122]:
102
In [124]:
# 인덱스 1행의 인덱스 0~1열 가지고오기
books_df.iloc[1,0:2]
Out[124]:
Available True
Location 205
Name: 두근두근 물리학, dtype: object
Pandas 활용 5. groupby¶
- Split : 특정한 '기준'을 바탕으로 DataFrame을 분할
- Apply : 통계함수 -sum(), mean(), median() - 을 적용해서 각 데이터를 압축
- Combine : Apply 된 결과를 바탕으로 새로운 Series를 생성 (group_key : applied_value)
.groupby()
In [126]:
covid.head(5)
Out[126]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | 36263 | 1269 | 25198 | 9796 | 106 | 10 | 18 | 3.50 | 69.49 | 5.04 | 35526 | 737 | 2.07 | Eastern Mediterranean |
1 | Albania | 4880 | 144 | 2745 | 1991 | 117 | 6 | 63 | 2.95 | 56.25 | 5.25 | 4171 | 709 | 17.00 | Europe |
2 | Algeria | 27973 | 1163 | 18837 | 7973 | 616 | 8 | 749 | 4.16 | 67.34 | 6.17 | 23691 | 4282 | 18.07 | Africa |
3 | Andorra | 907 | 52 | 803 | 52 | 10 | 0 | 0 | 5.73 | 88.53 | 6.48 | 884 | 23 | 2.60 | Europe |
4 | Angola | 950 | 41 | 242 | 667 | 18 | 1 | 0 | 4.32 | 25.47 | 16.94 | 749 | 201 | 26.84 | Africa |
In [128]:
# WHO Region 별 확진자수
# 1. covid에서 확진자수 column만 추출한다.
# 2. 이를 covid의 WHO Region을 기준으로 groupby 한다.
covid_by_region = covid['Confirmed'].groupby(by=covid["WHO Region"])
covid_by_region
Out[128]:
<pandas.core.groupby.generic.SeriesGroupBy object at 0x00000247F5DAA5B0>
In [129]:
covid_by_region.sum()
Out[129]:
WHO Region
Africa 723207
Americas 8839286
Eastern Mediterranean 1490744
Europe 3299523
South-East Asia 1835297
Western Pacific 292428
Name: Confirmed, dtype: int64
In [131]:
# 국가당 감염자 수
covid_by_region.mean() # sum()/ 국가수
Out[131]:
WHO Region
Africa 15066.812500
Americas 252551.028571
Eastern Mediterranean 67761.090909
Europe 58920.053571
South-East Asia 183529.700000
Western Pacific 18276.750000
Name: Confirmed, dtype: float64
In [151]:
death_ratio = (covid['Deaths / 100 Cases'])
max(death_ratio)
covid[covid['Deaths / 100 Cases'] == max(death_ratio)]
Out[151]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
184 | Yemen | 1691 | 483 | 833 | 375 | 10 | 4 | 36 | 28.56 | 49.26 | 57.98 | 1619 | 72 | 4.45 | Eastern Mediterranean |
2. covid 데이터에서 신규 확진자가 없는 나라 중 WHO Region이 'Europe'를 모두 출력하면?¶
In [166]:
covid_EU = covid[covid['WHO Region'] == 'Europe']
# covid_nocase = covid[covid['New cases'] == 0]
covid_EU_nocase = covid_EU[covid_EU['New cases'] == 0]
covid_EU_nocase
Out[166]:
Country/Region | Confirmed | Deaths | Recovered | Active | New cases | New deaths | New recovered | Deaths / 100 Cases | Recovered / 100 Cases | Deaths / 100 Recovered | Confirmed last week | 1 week change | 1 week % increase | WHO Region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
56 | Estonia | 2034 | 69 | 1923 | 42 | 0 | 0 | 1 | 3.39 | 94.54 | 3.59 | 2021 | 13 | 0.64 | Europe |
75 | Holy See | 12 | 0 | 12 | 0 | 0 | 0 | 0 | 0.00 | 100.00 | 0.00 | 12 | 0 | 0.00 | Europe |
95 | Latvia | 1219 | 31 | 1045 | 143 | 0 | 0 | 0 | 2.54 | 85.73 | 2.97 | 1192 | 27 | 2.27 | Europe |
100 | Liechtenstein | 86 | 1 | 81 | 4 | 0 | 0 | 0 | 1.16 | 94.19 | 1.23 | 86 | 0 | 0.00 | Europe |
113 | Monaco | 116 | 4 | 104 | 8 | 0 | 0 | 0 | 3.45 | 89.66 | 3.85 | 109 | 7 | 6.42 | Europe |
143 | San Marino | 699 | 42 | 657 | 0 | 0 | 0 | 0 | 6.01 | 93.99 | 6.39 | 699 | 0 | 0.00 | Europe |
157 | Spain | 272421 | 28432 | 150376 | 93613 | 0 | 0 | 0 | 10.44 | 55.20 | 18.91 | 264836 | 7585 | 2.86 | Europe |
내가 했던 실수¶
covid_EU_nocase = covid[covid_EU['New cases'] == 0]
covid_EU['New cases'] == 0
은 covid_EU
에 대해서 True, False
가 나타나는 Series 인데,
그 결과를 covid에 넣으려고 하니 에러가 일어남
3. 다음 데이터를 이용해 각 Region별로 아보카도가 가장 비싼 평균가격(AveragePrice)을 출력하면?¶
In [168]:
avocado = pd.read_csv('./avocado.csv')
avocado
Out[168]:
Unnamed: 0 | Date | AveragePrice | Total Volume | 4046 | 4225 | 4770 | Total Bags | Small Bags | Large Bags | XLarge Bags | type | year | region | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 2015-12-27 | 1.33 | 64236.62 | 1036.74 | 54454.85 | 48.16 | 8696.87 | 8603.62 | 93.25 | 0.0 | conventional | 2015 | Albany |
1 | 1 | 2015-12-20 | 1.35 | 54876.98 | 674.28 | 44638.81 | 58.33 | 9505.56 | 9408.07 | 97.49 | 0.0 | conventional | 2015 | Albany |
2 | 2 | 2015-12-13 | 0.93 | 118220.22 | 794.70 | 109149.67 | 130.50 | 8145.35 | 8042.21 | 103.14 | 0.0 | conventional | 2015 | Albany |
3 | 3 | 2015-12-06 | 1.08 | 78992.15 | 1132.00 | 71976.41 | 72.58 | 5811.16 | 5677.40 | 133.76 | 0.0 | conventional | 2015 | Albany |
4 | 4 | 2015-11-29 | 1.28 | 51039.60 | 941.48 | 43838.39 | 75.78 | 6183.95 | 5986.26 | 197.69 | 0.0 | conventional | 2015 | Albany |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
18244 | 7 | 2018-02-04 | 1.63 | 17074.83 | 2046.96 | 1529.20 | 0.00 | 13498.67 | 13066.82 | 431.85 | 0.0 | organic | 2018 | WestTexNewMexico |
18245 | 8 | 2018-01-28 | 1.71 | 13888.04 | 1191.70 | 3431.50 | 0.00 | 9264.84 | 8940.04 | 324.80 | 0.0 | organic | 2018 | WestTexNewMexico |
18246 | 9 | 2018-01-21 | 1.87 | 13766.76 | 1191.92 | 2452.79 | 727.94 | 9394.11 | 9351.80 | 42.31 | 0.0 | organic | 2018 | WestTexNewMexico |
18247 | 10 | 2018-01-14 | 1.93 | 16205.22 | 1527.63 | 2981.04 | 727.01 | 10969.54 | 10919.54 | 50.00 | 0.0 | organic | 2018 | WestTexNewMexico |
18248 | 11 | 2018-01-07 | 1.62 | 17489.58 | 2894.77 | 2356.13 | 224.53 | 12014.15 | 11988.14 | 26.01 | 0.0 | organic | 2018 | WestTexNewMexico |
18249 rows × 14 columns
In [170]:
avocado['region'].unique()
Out[170]:
array(['Albany', 'Atlanta', 'BaltimoreWashington', 'Boise', 'Boston',
'BuffaloRochester', 'California', 'Charlotte', 'Chicago',
'CincinnatiDayton', 'Columbus', 'DallasFtWorth', 'Denver',
'Detroit', 'GrandRapids', 'GreatLakes', 'HarrisburgScranton',
'HartfordSpringfield', 'Houston', 'Indianapolis', 'Jacksonville',
'LasVegas', 'LosAngeles', 'Louisville', 'MiamiFtLauderdale',
'Midsouth', 'Nashville', 'NewOrleansMobile', 'NewYork',
'Northeast', 'NorthernNewEngland', 'Orlando', 'Philadelphia',
'PhoenixTucson', 'Pittsburgh', 'Plains', 'Portland',
'RaleighGreensboro', 'RichmondNorfolk', 'Roanoke', 'Sacramento',
'SanDiego', 'SanFrancisco', 'Seattle', 'SouthCarolina',
'SouthCentral', 'Southeast', 'Spokane', 'StLouis', 'Syracuse',
'Tampa', 'TotalUS', 'West', 'WestTexNewMexico'], dtype=object)
In [172]:
avocado_by_region = avocado['AveragePrice'].groupby(by=avocado['region'])
avocado_by_region
Out[172]:
<pandas.core.groupby.generic.SeriesGroupBy object at 0x00000247F5E2F610>
In [177]:
avocado_by_region.max() # max 함수가 바로 되니까 엄청 쉽게 해결했음
Out[177]:
region
Albany 2.13
Atlanta 2.75
BaltimoreWashington 2.28
Boise 2.79
Boston 2.19
BuffaloRochester 2.57
California 2.58
Charlotte 2.83
Chicago 2.30
CincinnatiDayton 2.20
Columbus 2.22
DallasFtWorth 1.90
Denver 2.16
Detroit 2.08
GrandRapids 2.73
GreatLakes 1.98
HarrisburgScranton 2.27
HartfordSpringfield 2.68
Houston 1.92
Indianapolis 2.10
Jacksonville 2.99
LasVegas 3.03
LosAngeles 2.44
Louisville 2.29
MiamiFtLauderdale 3.05
Midsouth 2.17
Nashville 2.24
NewOrleansMobile 2.32
NewYork 2.65
Northeast 2.31
NorthernNewEngland 1.96
Orlando 2.87
Philadelphia 2.45
PhoenixTucson 2.62
Pittsburgh 1.83
Plains 2.13
Portland 2.86
RaleighGreensboro 3.04
RichmondNorfolk 2.05
Roanoke 2.27
Sacramento 2.82
SanDiego 2.74
SanFrancisco 3.25
Seattle 2.96
SouthCarolina 2.21
SouthCentral 1.81
Southeast 2.33
Spokane 2.95
StLouis 2.84
Syracuse 2.44
Tampa 3.17
TotalUS 2.09
West 2.52
WestTexNewMexico 2.93
Name: AveragePrice, dtype: float64
오늘 배운 것 :
1. pandas에서 1차원 자료 Series ( s가 대문자임)
2. 2차원 자료인 DataFrame 기초 ( D, F가 둘 다 대문자)
3. DataFrame과 CSV(Comma Separated Value)를 활용한 자료 분석 기초
'TIL > [겨울방학 부트캠프]TIL' 카테고리의 다른 글
TIL 6일차 (22.01.10) (0) | 2022.01.10 |
---|---|
TIL 5일차 (22.01.07) (0) | 2022.01.07 |
TIL 4일차 (22.01.06) (0) | 2022.01.06 |
TIL 2일차(22.01.04) (0) | 2022.01.04 |
TIL 1일차(22.01.03) (0) | 2022.01.04 |