Pandas 사용법_1

유형우·2021년 12월 5일
0

Pandas란?

Array 계산에 특화된 numpy기반으로 만들어져
다양한 기능을 제공

import 선언

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

pandas 연산시 누락된 데이터 확인

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

Series 연산시 누락된 데이터 채우기

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])

0개의 댓글