본문 바로가기
Python/python_pandas 입문 [책]

[python_pandas 입문] 공부 # 2일차

by happy_bigdata 2021. 1. 9.

# 공부 2일차 (3장)

 

- 데이터프레임 다루기

-시리즈 다루기

- 데이터프레임, 시리즈의 데이터 처리

- 데이터 저장 및 불러오기

 

생소하게만 느껴졌던 데이터프레임, 시리즈 다루기.

이제는 완벽히 익혀두자.! 더 이상의 기초 공부는 없다는 생각으로 파이팅~

 


 

# 원하는 index, columns 지정 

# columns 지정에 의해 Age와 Died의 순서가 바뀐 것을 확인 

 

scientists = pd.DataFrame(
    data = { 'Occupation' : ['Chemist', 'Statistician'], 'Born' : ['1920-07-25', '1876-06-13'], 'Died' : ['1958-04-16', '1937-10-16'], 'Age' : [37, 61]},
    index = ['Rosaline Franklin', 'William Gosset'],
    columns = ['Occupation', 'Born', 'Age', 'Died'] )
print(scientists)

 


# OrderedDict

# 딕셔너리의 키, 값으로 이루어진 한 쌍의 데이터들의 순서를 유지하기 위한 방법.

 

from collections import OrderedDict

scientists = pd.DataFrame(OrderedDict([
    ('Name', ['Rosaline Franklin', 'William Gosset']),
    ('Occupation', ['Chemist', 'Statistician']),
    ('Born', ['1920-07-25', '1876-06-13']),
    ('Died', ['1958-04-16', '1937-10-16']),
    ('Age', [37, 61])]))
print(scientists)

 

 

# 시리즈 메서드 정리
 - append : 2개 이상의 시리즈 연결
 - describe : 요약 통계량 계산
 - drop_duplicates : 중복값이 없는 시리즈 반환
 - equals : 시리즈에 해당 값을 가진 요소가 있는지 확인
 - get_values : 시리즈 값 구하기(values 속성과 동일)
 - isin : 시리즈에 포함된 값이 있는지 확인
 - min : 최솟값 반환
 - max : 최댓값 반환
 - mean : 산술 평균 반환
 - median : 중간값 반환
 - replace : 특정 값을 가진 시리즈 값을 교체
 - sample : 시리즈에서 임의의 값을 반환
 - sort_values : 값을 정렬
 - to_frame : 시리즈를 데이터프레임으로 반환

 

 

# 예시)를 통해 평균 나이보다 나이가 많은 사람의 "데이터"를 추출하기 위한 방법

print(ages[ages > ages.mean( )])

 

# 데이터프레임에 있는 모든 데이터에 대한 bool값

print(ages > ages.mean( ))

 

 

 

- 위 처럼, 모든 데이터에 대해 한 번에 연산하는 것 : 브로드캐스팅
- 시리즈처럼 여러 개의 값을 가진 데이터 : 벡터
- 단순 크기를 나타내는 데이터 : 스칼라

 

 

ex) 벡터 더하기 연산, 곱하기 연산

print(ages + ages)  

print(ages * ages)

 

ex) 벡터의 모든 값에 스칼라를 적용하여 브로드캐스팅한 결과

print(ages + 100)

print(ages * 2)

 

ex) 역순으로 데이터를 정렬해도 벡터와 벡터의 연산은 일치하는 인덱스의 값끼리 수행함 !

print(ages)

rev_ages = ages.sort_index(ascending=False)

print(rev_ages)

print(ages + rev_ages)

# import random

random.seed(42) -> 컴퓨터가 생성하는 난수의 기준값을 정하기 위해 사용

random.shuffle(scientists['Age'])
print(scientists['Age'])

 

 

# Age열 삭제하기 -> 데이터프레임의 drop 메서드 사용

scientists_dropped = scientists.drop(['Age'], axis=1)

print(scientists_dropped.columns)

 

 

# 피클

# 데이터를 바이너리 형태로 직렬화한 오브젝트를 저장하는 방법

# 장점 : 스프레드시트보다 더 작은 용량으로 데이터를 저장할 수 있어 매우 편리

 

 

# import xlwt, import openpyxl

 

xlwt, openpyxl 라이브러리 설치

ex )

names_df = names.to_frame()

 

import xlwt

names_df.to_excel('..경로/scientists_names_series_df.xls')

import openpyxl

names_df.to_excel('..경로/scientists_names_series_df.xlsx')

댓글