[파이썬] #11 - pandas 다루기 - 기본

 [파이썬] #11 - pandas 다루기



"""
Created on Mon Dec  9 20:13:36 2019

pandas 는 데이터 분석을 위해 사용하는 라이브러리 패키지
데이터의 간단한 통계 정보 및 시각화를 위한 다양한 기능제공
- 손쉬운 파일 입출력
- 다양한 파일 포맷 지원

#pip install pandas
#conda install pandas

"""

import pandas as pd
#pandas의 데이터 저장구조
# 1차원 : Series
# 2차원 : DataFrame
# 3차원 : Panel
series_data = list(range(1,10,2))
s = pd.Series(series_data)
print(f'type(s) -> {type(s)}')
print(s)


"""
Created on Mon Dec  9 20:38:09 2019

"""

#DataFrame 생성을 위한 딕셔너리 변수의 선언
#{키1 : 값1, .....}
import pandas as pd

data = {
        'year' : [2017,2018,2019,2020],
        'GDP Rate' : [1.8,3.1,3.0,None],
        'GDP' : ['1.637M', '1.859M', '2.237M',None]
        }

#딕셔러니 변수를 사용하여 DataFrame 객체 생성, 
# 각키의 값들은 동일한 개수
# 해당위치에 데이터가 없는경우 결측데이터(NaN) 이 대입.
df = pd.DataFrame(data)

print(f'type(df) -> {type(df)}')
print(df)

# -*- coding: utf-8 -*-
#DataFrame 생성을 위한 딕셔너리 변수(json형태)의 선언
#{키1 : 값1, .....}
import pandas as pd

data = {
        'year' : [2017,2018,2019],
        'GDP Rate' : [1.8,3.1,3.0],
        'GDP' : ['1.637M', '1.859M', '2.237M']
        }

#딕셔러니 변수를 사용하여 DataFrame 객체 생성, 
# 각키의 값들은 동일한 개수
# 해당위치에 데이터가 없는경우 결측데이터(NaN) 이 대입.
df = pd.DataFrame(data)

print(f'type(df) -> {type(df)}')
print(df)

#데이터 접근방법 key 이름
print(df.GDP)
print(df.year)
#key값에 공백이 있는경우
print(df['GDP Rate'])

#year 컬럼의 데이터중 2018년도 이후 데이터 추출
#boolean 값 반환
print(df.year >= 2018)
print("="*30)

#조건식의 결과를 사용하여 총 데이터 반환
print(df[df.year >= 2018])
print("="*30)

#특정조건에 맞는 일부분의 컬럼 데이터 조회
#데이터프레임변수[열이름][조건식]
print(df['GDP'][df.year >= 2018])
print("="*30)

#다수개의 열을 출력
print(df[['year', 'GDP Rate']][df.year>=2018])
print("="*30)

#pandas 에서 dtype : object 는 문자열의 의미
print(df.GDP)

# 문자열 타입이 제공하는 startswith 메소드
# 반대의 경우 endswith 메소드
# 매개변수로 시작되는 경우 TRUE
try : 
    print(df.GDP.startswith('1.'))
except :
    print('typeError 발생')
    print(df.GDP.str.startswith('1.'))
else :
    pass
    
# 데이터프레임명.컬럼명 -> Series 타입반환
# 정수또는 실수형의 경우 문제발생 안하지만 문자열의경우 
# Serise 타입이 해당 메소드를 제공하지 않기 때문에 
# 에러발생

#Serise 타입은 인덱스 연사사용가능, 특정인덱스 값 반환
print(df.GDP[0] == '1')
print("="*30)
#Serise 타입이 제공하는 str 속성
#해당내부의 데이터를 문자열과 같은 배열로 반환
print(df.GDP.str.startswith('1.'))

print("="*30)
#가져올 key값[조건식]
# 문자열비교시 무조건 str 속성 써줘야 함
# int형을 string타입으로 바꾸는 경우  to_string()
print(df.year.to_string().endswith('9'))
print(df.year[df.GDP.str.startswith('1')])


"""
Created on Mon Dec  9 21:15:59 2019

"""
import pandas as pd
import pandas_data as pdData

pdData.data['year'].append(2020)
pdData.data['GDP'].append(None)
pdData.data['GDP Rate'].append(None)

df = pd.DataFrame(pdData.data)
print("="*30)
print(df)


#info 메소드
print("="*10+" df.info() "+"="*10)
print(df.info())


#데이터프레임에 저장된 수치데이터에 대한 간략한 통계
# describe 메소드
# 수치데이터에 대한 정보만 출력
print("="*10+" df.describe() "+"="*10)
print(df.describe())

print(df.year.sum())
print(df.year.mean())
print(df.year.max())
print(df.year.min())

#데이터중 제일 오래된 데이터를 가져오시오.
minYear = df.year.min()
print(df[df.year == minYear])


#특정열에 저장된 데이터의 중복을 제거한 데이터개수를반환
#각각데이터개수를 반환
print("="*10+" df.value_counts() "+"="*10)
print(df['GDP Rate'].value_counts())
print(df['GDP Rate'].value_counts()/len(df))

"""
Created on Mon Dec  9 21:37:47 2019

"""

import pandas as pd
import pandas_data as pdData

print(pdData.data)

df = pd.DataFrame(pdData.data)
print(df)

#데이터프레임의 앞, 뒷부분 데이터 추출
#- head, tail 메소드
#- 기본값 5개
print(df.head(2))
print(df.tail(1))


# -*- coding: utf-8 -*-
"""
Created on Mon Dec  9 21:46:35 2019
"""

import pandas as pd

#pandas를 사용하여 CSV 파일을 로딩한 후, 
#dataFrame을 생성하는 방법

# - read_csv

fname = './data/iris.csv'

iris = pd.read_csv(fname)
print(iris)
print(iris.info())
print(iris.describe())


"""
Created on Mon Dec  9 21:59:12 2019
"""

import pandas as pd
fname = './data/winequality-red.csv'

wine = pd.read_csv(fname, sep=";")
#csv 구분문자는 콤마를 기준으로 데이터를 만들기때문에
#기준(콤마)이 다른경우 변경해줘야한다.
# sep='구분문자' ex) sep = ';'
print(wine.info())

print(wine.quality.value_counts())
quality_min = wine.quality.min()
low_quality = wine[wine.quality == quality_min]
print(low_quality.info()) #낮은 등급의 정보만 출력

# DataFrame 객체는 파일로 저장될 수 있습니다.
# 다양한 포맷지원
# 주의사항 : 인텍스정보 저장됨 
low_quality.to_csv('./data/low_quality.csv')

#index 정보 제외하고 출력하는 예제
low_quality.to_csv('./data/low_quality.csv', index=False)

#구분자 변경 
low_quality.to_csv('./data/low_quality.csv', index=False, sep=';')

#헤더제외
low_quality.to_csv('./data/low_quality.csv', index=False, header=False)

#encoding 변경
low_quality.to_csv('./data/low_quality.csv', index=False, encoding='utf-8')


댓글

이 블로그의 인기 게시물

[파이썬] #2-모듈설치 및 스파이더(spyder)사용

[Tool-Tip] 에디트플러스에서 자동정렬기능 추가하기

[파이썬] #1- 아나콘다 설치, 아나콘다 파이썬 환경 만들기