pandas는 numpy 기반으로 개발되었고,
csv파일을 간편하게 읽고, 쓸 수 있다.
pandas.read_csv(csv_path)
데이터타입은 크게 2가지가 있다.
[코드]
import pandas as pd
seri = pd.Series(['a','b','c','d'])
seri
[결과]
0 a
1 b
2 c
3 3
dtype: object
series는 values
, index
values
는 배열로 표현된 실제 데이터의 값이고, index
는 왼쪽의 순서를 나타낸다.
[코드]
seri.values
seri.index
[결과]
array(['a', 'b', 'c', 'd'], dtype=object)
RangeIndex(start=0, stop=4, step=1)
또한 Series는 index
를 설정해줄수도 있다.
1. 인자로 넣어주는 방법이 있으며
seri2 = pd.Series(['a', 'b', 'c', 'd'], index=['i','j','k','h'])
seri2.index = ['stack','brandi','zigzag','jackson']
name
속성을 이용하여 Series객체의 이름을 정해줄수도 있고,
Series index
의 name
속성을 이용해서 index name
을 정해줄수도 있다.
seri2.name = 'siri_1'
seri2.index.name = 'i_1'
table
과 비슷한 형태를 한다.
Series와 DataFrame을 비교해보자.
data = {'Region' : ['Korea', 'America', 'Chaina', 'Canada', 'Italy'],
'Sales' : [300, 200, 500, 150, 50],
'Amount' : [90, 80, 100, 30, 10],
'Employee' : [20, 10, 30, 5, 3]
}
seri = pd.Series(data)
df = pd.DataFrame(data)
[Series]
Region [Korea, America, Chaina, Canada, Italy]
Sales [300, 200, 500, 150, 50]
Amount [90, 80, 100, 30, 10]
Employee [20, 10, 30, 5, 3]
dtype: object
[DataFrame]
Region Sales Amount Employee
0 Korea 300 90 20
1 America 200 80 10
2 Chaina 500 100 30
3 Canada 150 30 5
4 Italy 50 10 3
DataFrame으로 columns, index를 사용하여 조회도 가능하다.
df.columns
Index(['Region', 'Sales', 'Amount', 'Employee'], dtype='object')
df.index
RangeIndex(start=0, stop=5, step=1)
head와 tail을 이용하여 DataFrame에 앞 20줄, 뒤 20줄을 가져올수 있다.
물론 가져오고 싶은 줄 수를 조정도 가능하다.
df.head(5) # 앞 5줄 가져오기
df.tail(5) # 뒤 5줄 가져오기
info()
는 column값들과 Null값, 그리고 자료형을 알려주는 메소드이다.
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 798 entries, 0 to 797 Data columns (total 17 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 SNo 798 non-null int64 1 Date 798 non-null object 2 Country 798 non-null object 3 RegionCode 798 non-null int64 4 RegionName 798 non-null object 5 Latitude 798 non-null float64 6 Longitude 798 non-null float64 7 HospitalizedPatients 798 non-null int64 8 IntensiveCarePatients 798 non-null int64 9 TotalHospitalizedPatients 798 non-null int64 10 HomeConfinement 798 non-null int64 11 CurrentPositiveCases 798 non-null int64 12 NewPositiveCases 798 non-null int64 13 Recovered 798 non-null int64 14 Deaths 798 non-null int64 15 TotalPositiveCases 798 non-null int64 16 TestsPerformed 798 non-null int64 dtypes: float64(2), int64(12), object(3) memory usage: 106.1+ KB
기본적인 통계데이터를 describe()
를 이용하여 확인할 수 있다.
개수(Count), 평균(mean), 표준편차(std), 최솟값(min), 4분위수(25%, 50%, 75%), 최댓값(max)를 보여준다.
df.describe()
SNo RegionCode Latitude Longitude HospitalizedPatients IntensiveCarePatients TotalHospitalizedPatients HomeConfinement CurrentPositiveCases NewPositiveCases Recovered Deaths TotalPositiveCases TestsPerformed count 798.00000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 798.000000 mean 398.50000 10.190476 43.046293 12.225955 533.058897 82.596491 615.655388 674.998747 1290.654135 138.553885 205.706767 162.677945 1659.038847 7932.164160 std 230.50705 5.798698 2.490342 2.660615 1532.090841 190.735985 1719.508711 1627.086600 3282.834715 327.616052 1060.433732 700.264327 4945.629053 17067.087279 min 0.00000 1.000000 38.115697 7.320149 0.000000 0.000000 0.000000 0.000000 0.000000 -17.000000 0.000000 0.000000 0.000000 0.000000 25% 199.25000 5.000000 41.125596 11.121231 5.000000 0.000000 6.000000 8.000000 14.250000 2.000000 0.000000 0.000000 14.250000 230.000000 50% 398.50000 10.000000 43.616760 12.388247 64.000000 16.000000 80.500000 109.000000 205.000000 32.000000 3.000000 6.000000 210.500000 1610.000000 75% 597.75000 15.000000 45.434905 13.768136 325.750000 71.750000 396.250000 552.750000 998.750000 117.750000 34.000000 55.750000 1110.750000 7493.000000 max 797.00000 20.000000 46.499335 16.867367 11927.000000 1342.000000 13269.000000 12496.000000 25765.000000 3251.000000 11415.000000 7593.000000 44773.000000 121449.000000
isnull()
은 데이터에 Missing Value(결측치)가 있는지 확인하기 위해 쓴다.
sum()
과의 조합으로 Missing Value가 몇개인지 확인할 수 있다.
df.isnull().sum()
SNo 0 Date 0 Country 0 RegionCode 0 RegionName 0 Latitude 0 Longitude 0 HospitalizedPatients 0 IntensiveCarePatients 0 TotalHospitalizedPatients 0 HomeConfinement 0 CurrentPositiveCases 0 NewPositiveCases 0 Recovered 0 Deaths 0 TotalPositiveCases 0 TestsPerformed 0 dtype: int64
value_counts()
를 사용해 각 범주(Case, Category)별로 값이 몇 개 있는지 구할 수 있다.
data['RegionName'].value_counts()
여기에 sum()
을 합치면 컬럼별 통계수치의 합을 확인할 수 있다.
data['RegionName'].value_counts().sum()
.corr()
는 상관관계 메소드이다. 2개의 인자가 필요하다.
두 컬럼 내 데이터가 얼마만큼의 상관관계가 있는지를 확인할 때 유용하다
ex) 폐암과 사망률의 상관관계
data['TestsPerformed'].corr(data['TotalPositiveCases'])
모든 데이터들 간에 상관관계를 확인하고 싶다면 밑에와 같이 작성하면 된다.
df.corr()
특정한 칼럼을 삭제하고 싶을 때 사용하는 메소드이다.