pandas

Nam Eun-Ji·2021년 1월 11일
0
  • Series, DataFrame이라는 자료구조 제공
  • 구조화된 데이터를 빠르고 쉬우면서 다양한 형식으로 가공할 수 있는 풍부한 자료구조와 함수를 제공한다.
  • DB테이블, 엑셀 파일과 같은 테이블 형태의 데이터를 다루며, 관계연산이 가능하다.
pip install pandas

import pandas as pd



Series

Series 객체 생성

list→Series
index, value로 표시됨(index-왼쪽, 순서 / value-오른쪽,실제 데이터 값)

ser = pd.Series(['a','b','c',3])
print(ser)
# 0    a
# 1    b
# 2    c
# 3    3
# dtype: object

dict → Series

Country_Number = {'Korea': 82, 'America': 1, 'Swiss': 41, 'Italy': 39, 'Japan': 81}
ser3 = pd.Series(Country_Number)
print(ser3)
# Korea      82
# America     1
# Swiss      41
# Italy      39
# Japan      81
# dtype: int64
  • .values : array형태로 반환
print(ser.values)  # array(['a', 'b', 'c', 3], dtype=object)
  • .index : RangeIndex 반환
print(ser.index)  # RangeIndex(start=0, stop=4, step=1)

index 설정

  • 객체 생성 시에 인자로 넣어줄 수 있다.
ser2 = pd.Series(['a', 'b', 'c', 3], index=['i','j','k','h'])
print(ser2)
# i    a
# j    b
# k    c
# h    3
# dtype: object
  • 인덱스를 할당해줄 수 있다.
ser2.index = ['Jhon', 'Steve', 'Jack', 'Bob']
print(ser2)
# Jhon     a
# Steve    b
# Jack     c
# Bob      3
# dtype: object
  • 인덱스가 기본으로 설정되는 정수 형태가 아니라면 Index타입의 객체가 표시된다.
print(ser2.index)  # Index(['Jhon', 'Steve', 'Jack', 'Bob'], dtype='object')

slicing

Country_Number = {'Korea': 82, 'America': 1, 'Swiss': 41, 'Italy': 39, 'Japan': 81}
ser3 = pd.Series(Country_Number)

print(ser3['korea'])  # 82
print(ser3['Italy':])
# Italy    39
# Japan    81
# dtype: int64

Name

  • Series의 이름과 index에 이름을 지정해줄 수 있다.
    series변수.name = “ 시리즈이름”, series변수.index.name = “인덱스이름”
ser3.name = 'Country_PhoneNumber'
ser3.index.name = 'Country'
print(ser3)
# Country
# Korea      82
# America     1
# Swiss      41
# Italy      39
# Japan      81
# Name: Country_PhoneNumber, dtype: int64



DataFrame

  • 표(table)와 같은 자료구조
  • Series는 한 개의 인덱스(키) 칼럼과 값 칼럼 2개의 칼럼만 존재하는 반면 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]
}
s = pd.Series(data)
print(s)

index, column index

  • 컬럼 확인
s.columns  # Index(['Region', 'Sales', 'Amount', 'Employee'], dtype='object')
  • 인덱스 확인
s.index  # RangeIndex(start=0, stop=5, step=1)
  • 컬럼, 인덱스 변경
s.index=['one','two','three','four','five']
s.columns = ['a','b','c','d']
print(s)

csv파일읽기

pd.read_csv(path)

import os

csv_path = os.getenv("HOME") + "/aiffel/data_represent/data/covid19_italy_region.csv"
data = pd.read_csv(csv_path)  # csv파일을 DataFrame객체로 읽음

head, tail

.head(int) : 처음 행부터 인자만큼 보여준다.(default=5)
.tail(int) : 마지막 행부터 인자만큼 보여준다.(default=5)

data.head()
data.tail()

컬럼별 자료형 확인 info

.info(): 각 컬럼별로 Null값과 자료형을 보여준다.

data.info()



통계

기본 통계

.describe() : 각 컬럼별로 기본 통계데이터를 보여준다.

  • 개수(Count), 평균(mean), 표준편차(std), 최솟값(min), 4분위수(25%, 50% 75%), 최댓값(max)

결측값(Missing value) 확인

.isnull() : Null인지 체크
.sum() : 합계
이 두개의 메소드를 이용해서 missing 데이터 개수의 총합을 구할 수 있다.

data.isnull().sum()

count

  • .value_counts() : 컬럼별 데이터 갯수 확인
data['RegionName'].value_counts()
  • .value_counts().sum() : 컬럼별 통계수치의 합
data['RegionName'].value_counts().sum()  # 798
  • 각 컬럼별 합계 구하기
print(data['TotalPositiveCases'].sum())  # 1323913
print(data['TestsPerformed'].sum())      # 6329867
  • DataFrame전체의 각 컬럼별로 합계 구하기
data.sum()

상관관계

참고 : https://gomguard.tistory.com/173

  • .corr() : 상관관계
print(data['TestsPerformed'].corr(data['TotalPositiveCases'])) # 0.8555291657820232
data.corr()
  • drop() : 컬럼 제거
data.drop(['Latitude','Longitude', 'Date','RegionCode','SNo'], axis=1, inplace=True)

그 외 메소드

  • count(): NA를 제외한 수
  • describe(): 요약통계
  • min(), max(): 최소, 최댓값
  • sum(): 합
  • mean(): 평균
  • median(): 중앙값
  • var(): 분산
  • std(): 표준편차
  • argmin(), argmax(): 최소, 최댓값을 가지고 있는 값
  • idxmin(), idxmax(): 최소, 최댓값을 가지고 있는 인덱스
  • cumsum(): 누적 합
  • pct_change(): 퍼센트 변화율


[10 minutes to pandas]
https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html

profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글