pandas (feat. python)

괴도소녀·2021년 7월 6일
2

데이터

목록 보기
2/14

pandas는 numpy 기반으로 개발되었고,
csv파일을 간편하게 읽고, 쓸 수 있다.

pandas.read_csv(csv_path)

데이터타입은 크게 2가지가 있다.

  • Series
  • DataFrame

Series

[코드]

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'])
  1. 할당해서 넣어주는 방법도 있다.
seri2.index = ['stack','brandi','zigzag','jackson']

name속성을 이용하여 Series객체의 이름을 정해줄수도 있고,
Series indexname 속성을 이용해서 index name을 정해줄수도 있다.

seri2.name = 'siri_1'
seri2.index.name = 'i_1'

DataFrame

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

head와 tail을 이용하여 DataFrame에 앞 20줄, 뒤 20줄을 가져올수 있다.
물론 가져오고 싶은 줄 수를 조정도 가능하다.

df.head(5) # 앞 5줄 가져오기
df.tail(5) # 뒤 5줄 가져오기

info()

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

기본적인 통계데이터를 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().sum()

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

value_counts()를 사용해 각 범주(Case, Category)별로 값이 몇 개 있는지 구할 수 있다.

data['RegionName'].value_counts()

여기에 sum()을 합치면 컬럼별 통계수치의 합을 확인할 수 있다.

data['RegionName'].value_counts().sum()

corr()

.corr()는 상관관계 메소드이다. 2개의 인자가 필요하다.
두 컬럼 내 데이터가 얼마만큼의 상관관계가 있는지를 확인할 때 유용하다
ex) 폐암과 사망률의 상관관계

data['TestsPerformed'].corr(data['TotalPositiveCases'])

모든 데이터들 간에 상관관계를 확인하고 싶다면 밑에와 같이 작성하면 된다.

df.corr()

drop()

특정한 칼럼을 삭제하고 싶을 때 사용하는 메소드이다.


참고 사이트

10분 pandas

0개의 댓글