Array 계산에 특화된 numpy기반으로 만들어져
다양한 기능을 제공
import pandas as pd
series = pd.Series([1,2,3,4], index = ['a', 'b', 'c', 'd'], name="Title")
# 값과 인덱스 형태로 데이터를 제공
a 1
b 2
c 3
d 4
Name: Title, dtype: int64
dic = {
"korea" : 5180,
"japan" : 12718,
"china" : 141500,
"usa" : 32676,
}
series = pd.Series(dic)
#
korea 5180
japan 12718
china 141500
usa 32676
dtype: int64
population_dict = {
'korea': 5180,
'japan': 12718,
'china': 141500,
'usa': 32676
}
gdp_dict = {
'korea': 169320000,
'japan': 516700000,
'china': 1409250000,
'usa': 2041280000,
}
country = pd.DataFrame({
'population' : population_dict,
'gdp' : gdp_dict
})
#
Country DataFrame
population gdp
china 141500 1409250000
japan 12718 516700000
korea 5180 169320000
usa 32676 2041280000
country = pd.DataFrame({
'population' : population_dict,
'gdp' : gdp_dict
})
1. 인덱스 종류 확인
country.index
# Index(['korea', 'japan', 'china', 'usa'], dtype='object')
2. 컬럼 종류 확인
country.columns
# Index(['population', 'gdp'], dtype='object')
3. 컬럼으로 정보 뽑아내기
country['gdp']
#
korea 169320000
japan 516700000
china 1409250000
usa 2041280000
Name: gdp, dtype: int64
4. 새로운 컬럼 추가
gdp_per_capita = country['gdp'] / country['population']
country['gdp_per_capita'] = gdp_per_capita
#
population gdp gdp_per_capita
korea 5180 169320000 32687.258687
japan 12718 516700000 40627.457147
china 141500 1409250000 9959.363958
usa 32676 2041280000 62470.314604
country = pd.read_csv("./data/country.csv", index_col=0)
#
Country DataFrame
gdp population gdp per capita
china 1409250000 141500 9959.363958
japan 516700000 12718 40627.457147
korea 169320000 5180 32687.258687
usa 2041280000 32676 62470.314604
1. 인덱싱 Indexing
china 인덱스 출력
country.loc['china']
#
gdp 1.409250e+09
population 1.415000e+05
gdp per capita 9.959364e+03
Name: china, dtype: float64
2. 슬라이싱 Slicing
데이터프레임의 1번째부터 3번째 인덱스를 출력
country.iloc[1:4]
#
gdp population gdp per capita
japan 516700000 12718 40627.457147
korea 169320000 5180 32687.258687
usa 2041280000 32676 62470.314604
A = pd.DataFrame(np.random.randint(0, 10, (2, 2)), columns=['A', 'B'])
B = pd.DataFrame(np.random.randint(0, 10, (3, 3)), columns=['B', 'A', 'C'])
C = A + B
#
A B C
0 10.0 8.0 NaN
1 14.0 10.0 NaN
2 NaN NaN NaN
1. 누락된 데이터 체크하기
C.isnull()
#
A B C
0 False False True
1 False False True
2 True True True
C.notnull()
#
A B C
0 True True False
1 True True False
2 False False False
1. 양쪽의 빈값은 0으로 처리된다.
A = pd.Series([2,4,6], index=[0,1,2])
B = pd.Series([1,3,5], index=[1,2,3])
A + B
A.add(B, fill_value=0)
df = pd.DataFrame({
'col1' : [2, 1, 9, 8, 7, 4],
'col2' : ['A', 'A', 'B', np.nan, 'D', 'C'],
'col3': [0, 1, 9, 4, 2, 3],
})
#
col1 col2 col3
0 2 A 0
1 1 A 1
2 9 B 9
3 8 NaN 4
4 7 D 2
5 4 C 3
1. col1을 기준으로 오름차순으로 정렬
sorted_df1 = df.sort_values('col1', ascending = True)
2. col2를 기준으로 내림차순으로 정렬
sorted_df2 = df.sort_values('col2', ascending = False)
3. col2를 기준으로 오름차순으로, col1를 기준으로 내림차순으로 정렬
sorted_df3 = df.sort_values(['col2', 'col1'], ascending=[True, False])