import pandas as pd
data = pd.read_csv('data/gapminder_gdp_europe.csv', index_col='country')
print(data.iloc[0, 0]) # 첫 번째 행, 첫 번째 열의 값 선택1601.056136
데이터프레임에서 특정 위치의 값을 선택할 때는 두 가지 방법을 주로 사용합니다.
iloc): 행과 열의 정수 인덱스(0, 1, 2…)를 사용하여 선택합니다.loc): 행 인덱스 이름과 열 이름을 사용하여 선택합니다.ilocimport pandas as pd
data = pd.read_csv('data/gapminder_gdp_europe.csv', index_col='country')
print(data.iloc[0, 0]) # 첫 번째 행, 첫 번째 열의 값 선택1601.056136
locprint(data.loc["Albania", "gdpPercap_1952"]) # 'Albania' 행, 'gdpPercap_1952' 열의 값 선택1601.056136
:을 사용하면 해당 축의 모든 데이터를 선택합니다.print(data.loc["Albania", :]) # 'Albania' 행의 모든 열 선택
print(data.loc[:, "gdpPercap_1952"]) # 'gdpPercap_1952' 열의 모든 행 선택gdpPercap_1952 1601.056136
gdpPercap_1957 1942.284244
gdpPercap_1962 2312.888958
gdpPercap_1967 2760.196931
gdpPercap_1972 3313.422188
gdpPercap_1977 3533.003910
gdpPercap_1982 3630.880722
gdpPercap_1987 3738.932735
gdpPercap_1992 2497.437901
gdpPercap_1997 3193.054604
gdpPercap_2002 4604.211737
gdpPercap_2007 5937.029526
Name: Albania, dtype: float64
country
Albania 1601.056136
Austria 6137.076492
Belgium 8343.105127
Bosnia and Herzegovina 973.533195
Bulgaria 2444.286648
Croatia 3119.236520
Czech Republic 6876.140250
Denmark 9692.385245
Finland 6424.519071
France 7029.809327
Germany 7144.114393
Greece 3530.690067
Hungary 5263.673816
Iceland 7267.688428
Ireland 5210.280328
Italy 4931.404155
Montenegro 2647.585601
Netherlands 8941.571858
Norway 10095.421720
Poland 4029.329699
Portugal 3068.319867
Romania 3144.613186
Serbia 3581.459448
Slovak Republic 5074.659104
Slovenia 4215.041741
Spain 3834.034742
Sweden 8527.844662
Switzerland 14734.232750
Turkey 1969.100980
United Kingdom 9979.508487
Name: gdpPercap_1952, dtype: float64
loc 슬라이싱은 마지막 레이블을 포함한다는 점에 유의하세요.# 'Italy'부터 'Poland'까지의 행과 1962년부터 1972년까지의 열 선택
subset = data.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972']
print(subset) gdpPercap_1962 gdpPercap_1967 gdpPercap_1972
country
Italy 8243.582340 10022.401310 12269.273780
Montenegro 4649.593785 5907.850937 7778.414017
Netherlands 12790.849560 15363.251360 18794.745670
Norway 13450.401510 16361.876470 18965.055510
Poland 5338.752143 6557.152776 8006.506993
True/False로 구성된 마스크를 생성합니다.mask = subset > 10000
print(mask) gdpPercap_1962 gdpPercap_1967 gdpPercap_1972
country
Italy False True True
Montenegro False False False
Netherlands True True True
Norway True True True
Poland False False False
NaN(Not a Number, 결측치)으로 표시됩니다.print(subset[mask]) gdpPercap_1962 gdpPercap_1967 gdpPercap_1972
country
Italy NaN 10022.40131 12269.27378
Montenegro NaN NaN NaN
Netherlands 12790.84956 15363.25136 18794.74567
Norway 13450.40151 16361.87647 18965.05551
Poland NaN NaN NaN
groupby를 사용하면 특정 기준에 따라 데이터를 나누고, 각 그룹에 대해 통계량을 계산한 뒤 다시 결합하는 분석을 수행할 수 있습니다.
# 전체 평균보다 높은지 여부를 기준으로 그룹화하여 합계 계산
mask_higher = data > data.mean()
wealth_score = mask_higher.aggregate('sum', axis=1) / len(data.columns)
print(data.groupby(wealth_score).sum()) gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \
0.000000 36916.854200 46110.918793 56850.065437 71324.848786
0.333333 16790.046878 20942.456800 25744.935321 33567.667670
0.500000 11807.544405 14505.000150 18380.449470 21421.846200
1.000000 104317.277560 127332.008735 149989.154201 178000.350040
gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \
0.000000 88569.346898 104459.358438 113553.768507 119649.599409
0.333333 45277.839976 53860.456750 59679.634020 64436.912960
0.500000 25377.727380 29056.145370 31914.712050 35517.678220
1.000000 215162.343140 241143.412730 263388.781960 296825.131210
gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007
0.000000 92380.047256 103772.937598 118590.929863 149577.357928
0.333333 67918.093220 80876.051580 102086.795210 122803.729520
0.500000 36310.666080 40723.538700 45564.308390 51403.028210
1.000000 315238.235970 346930.926170 385109.939210 427850.333420
data_europe에서 ‘Serbia’ 국가의 ’2007년 1인당 GDP’를 선택하는 코드를 작성하세요.iloc[0:2, 0:2]와 loc['Albania':'Belgium', '1952':'1962']의 결과 차이를 설명해 보세요.data_europe.loc['Serbia', 'gdpPercap_2007']iloc은 마지막 인덱스를 포함하지 않지만, loc은 마지막 레이블을 결과에 포함합니다.다음 코드의 각 줄이 수행하는 작업을 설명해 보세요.
first = pd.read_csv('data/gapminder_all.csv', index_col='country')
second = first[first['continent'] == 'Americas']
third = second.drop('Puerto Rico')
fourth = third.drop('continent', axis = 1)
fourth.to_csv('result.csv')read_csv: 데이터를 읽어옵니다.first[...]: 대륙이 ’Americas’인 행만 필터링합니다.drop('Puerto Rico'): 특정 행을 삭제합니다.drop(..., axis=1): 특정 열을 삭제합니다.to_csv: 결과를 파일로 저장합니다.dir(data)를 사용하여 데이터프레임에서 사용할 수 있는 메서드 목록을 확인해 보세요. 그중 중앙값을 계산하는 메서드는 무엇인가요?
중앙값을 계산하는 메서드는 median()입니다. data.median()으로 사용할 수 있습니다.
국경선이나 영토가 시간에 따라 변하는 국가(예: 폴란드)의 장기적인 GDP 데이터를 분석할 때 발생할 수 있는 문제점은 무엇일까요? 이를 해결하기 위해 어떤 고려가 필요할까요?
영토 변화는 인구와 경제 규모에 직접적인 영향을 미치므로 단순 수치 비교는 왜곡될 수 있습니다. 분석 시 역사적 맥락을 고려하거나, 1인당 GDP와 같은 상대적 지표를 활용하고 데이터의 한계를 명시해야 합니다.
iloc은 위치(정수)를 기준으로, loc은 레이블(이름)을 기준으로 데이터를 선택합니다.:를 사용하여 전체 범위를 지정하거나 슬라이싱을 수행할 수 있습니다.NaN은 데이터가 없음을 나타내며, 통계 연산 시 자동으로 제외되는 경우가 많습니다.groupby를 활용하면 데이터를 그룹별로 나누어 분석할 수 있습니다.