색인 :반환하는 DataFrame에서 하나 이상의 칼럼을 색인으로 지정할 수 있다.
자료형 추론과 데이터 변환 : 사용자가 정의 값 변환과 비어있는 값을 위한 사용자 리스트를 포함한다.
날짜 분석: 여러 칼럼에 걸쳐 있는 날짜와 시간 정보를 하나의 칼럼에 조합해서 결과에 반영한다.
반복: 여러 파일에 걸쳐 있는 자료를 반복적으로 읽어 올 수 있다.
정제되지 않은 데이터 처리: 꼬리말, 주석, 천 단위마다 쉼표로 구분된 숫자 등을 처리 해준다.
read_csv : 파일, URL 또는 파일과 유사한 객체로부터 구분된 데이터를 읽어 온다. 데이터 구분자는 쉼표(,)를 기본으로 한다.
read_table : 파일, URL 또는 파일과 유사한 객체로부터 구분된 데이터를 읽어 온다. 데이터 구분자는 탭('\t') 을 기본으로 한다.
read_fwf : 고정폭 칼럼 형식에서 데이터를 읽어온다.(구분자가 없는 데이터)
read_clipboard : 클립보드에 있는 데이터를 읽어온다. 웹페이지에서 표를 긁어올 때 유용하다.
import pandas as pd
frame1 = pd.read_csv('data/ex1.csv')
print(frame1)
print(type(frame1))
print()
frame2 = pd.read_csv('data/ex2.csv',header=None)
print(frame2)
print()
frame3 = pd.read_csv('data/ex2.csv',
names=['one','two','three','four','msg'])
print(frame3)
print()
frame3 = pd.read_csv('data/ex2.csv',
names=['one','two','three','four','msg'],
index_col='msg')
print(frame3)
print()
frame3 = pd.read_csv('data/ex2.csv',
names=['one','two','three','four','msg'],
index_col=0)
print(frame3)
print()
frame4 = pd.read_csv('data/ex4.csv',skiprows=[0,2,3])
print(frame4)
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
<class 'pandas.core.frame.DataFrame'>
0 1 2 3 4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
one two three four msg
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
one two three four
msg
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12
two three four msg
one
1 2 3 4 hello
5 6 7 8 world
9 10 11 12 foo
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
path : 파일 시스템에서의 위치, URL
sep/delimiter : 필드를 구분하기 위해 사용할 연속된 문자나 정규표현식
header : 칼럼의 이름으로 사용할 로우 번호나 이름
index_col : 색인으로 사용할 컬럼 번호나 이름
names : 칼럼 이름으로 사용할 리스트
skiprows : 파일의 시작부터 무시할 로우의 갯 수 또는 무시할 로우 번호가 담긴 리스트
na_values : NA 값으로 처리할 값들의 나열
commet : 주석으로 분류되어 파싱하지 않을 문자 혹은 문자열
parse_dates : 날짜를 datetime 으로 변환 할지의 여부
converters : 변환 시 칼럼에 사용할 함수를 지정한다.
dayfirst : 모호한 날짜 형식을 경우 국제 형식으로 간주한다.(7/6/2012)
date_parse : 날짜 변환 시 사용할 함수
nrow : 파일의 첫 일부만 읽어올 때 몇 줄을 읽을 것인지 지정한다.
iterator : 파일을 조금씩 읽을 때 사용하도록 TextParser 객체를 반환하도록 한다.
chunksize : TextParser 객체에서 사용할, 한 번에 읽을 파일의 크기
verbose : 파싱 결과에 대한 정보를 출력한다.
Encoding : 유니코드 인코딩 종류를 지정한다.
squeeze : 로우가 하나뿐이라면 Series 객체를 반환한다.
import pandas as pd
import numpy as np
from day3.pandasEx8 import sdata
# chunker = pd.read_csv('data/ex6.csv',chunksize=1000)
# print(chunker)
# print()
#
# for piece in chunker:
# print(piece, end='\n\n')
# sdata1 = pd.Series(['a','b','a','c','d','a','c'])
# print(sdata1)
# print()
# print(sdata1.value_counts())
chunker = pd.read_csv('data/ex6.csv',chunksize=1000)
print(chunker)
print()
tot = pd.Series([], dtype=np.float64)
for piece in chunker:
tot = tot.add(piece['key'].value_counts(), fill_value=0)
tot - tot.sort_values(ascending=False)
print(tot[:10])
<pandas.io.parsers.readers.TextFileReader object at 0x000001B63B6B7520>
key
0 151.0
1 146.0
2 152.0
3 162.0
4 171.0
5 157.0
6 166.0
7 164.0
8 162.0
9 150.0
dtype: float64
예제
import pandas as pd
frame1 = pd.read_csv('data/quiz_data.csv')
print(frame1)
frame2 = pd.read_csv('data/quiz_data.csv',index_col='name')
print(frame2)
def f3(x):
return pd.Series([x.max(),x.min(),x.sum(),x.mean()], index=['최고값','최소값','총합','평균'])
result2 = frame2.apply(f3,axis=0).round(1)
print(result2)
kor eng math sci name
0 100 88 90 88 kim
1 99 54 67 98 lee
2 89 87 87 61 choi
3 92 85 100 78 hyo
4 56 100 54 87 oh
5 75 98 92 79 jun
kor eng math sci
name
kim 100 88 90 88
lee 99 54 67 98
choi 89 87 87 61
hyo 92 85 100 78
oh 56 100 54 87
jun 75 98 92 79
kor eng math sci
최고값 100.0 100.0 100.0 98.0
최소값 56.0 54.0 54.0 61.0
총합 511.0 512.0 490.0 491.0
평균 85.2 85.3 81.7 81.8
Json.loads()을 이용하여 json 문자열을 파이썬 형태로 변환 할 수 있다.
Json.dumps()는 파이썬 객체를 JSON형태로 변환한다.
import json
import pandas as pd
obj = '''
{
"name":"Wes",
"place_lived":["United States","Spain","Germany"],
"siblings":[{"name":"scott","age":25,"pet":"zuko"},
{"name":"kim","age":30,"pet":"kitty"}]
}
'''
data= json.loads(obj)
print(data)
print(type(data))
print()
print(data['siblings'])
frame = pd.DataFrame(data['siblings'])
print(frame)
{'name': 'Wes', 'place_lived': ['United States', 'Spain', 'Germany'], 'siblings': [{'name': 'scott', 'age': 25, 'pet': 'zuko'}, {'name': 'kim', 'age': 30, 'pet': 'kitty'}]}
<class 'dict'>
[{'name': 'scott', 'age': 25, 'pet': 'zuko'}, {'name': 'kim', 'age': 30, 'pet': 'kitty'}]
name age pet
0 scott 25 zuko
1 kim 30 kitty

pip install openpyxl
설치 후 엑셀 파일 가져오기 가능함
import pandas as pd
frame = pd.read_excel('data/monthly_sales.xlsx', header=1, index_col=0)
print(frame)
print()
frame2 = pd.read_excel('data/class_info.xlsx', header=0, sheet_name='2학년')
print(frame2)
print()
frame2 = pd.read_excel('data/class_info.xlsx', header=0, sheet_name=0)
print(frame2)
print()
data= pd.read_excel('data/class_info.xlsx', header=0, sheet_name=None)
print(data)
print()
print(data['2학년'])
data2 = pd.read_excel('data/class_info.xlsx', header=0, sheet_name=['1학년','2학년'])
print(data2)
print()
거래처 품명 수량 가격 소계
일자
2020-03-03 박혜리 바나나 3 1000 3000
2020-03-05 김승호 사과 2 1500 3000
2020-03-05 최원필 딸기 2 2000 4000
2020-03-07 노명환 바나나 8 1000 8000
2020-03-15 김승호 사과 2 1500 3000
2020-03-16 노명환 딸기 5 2000 10000
2020-03-20 이영자 망고 3 1900 5700
번호 이름
0 1 최영빈
1 2 김찬수
2 3 이준혁
3 4 최상준
4 5 임길수
5 6 이상태
6 7 오형웅
번호 이름
0 1 김이슬
1 2 박예빈
2 3 최솔찬
3 4 이우혁
4 5 강남진
5 6 길일수
6 7 오진영
{'1학년': 번호 이름
0 1 김이슬
1 2 박예빈
2 3 최솔찬
3 4 이우혁
4 5 강남진
5 6 길일수
6 7 오진영, '2학년': 번호 이름
0 1 최영빈
1 2 김찬수
2 3 이준혁
3 4 최상준
4 5 임길수
5 6 이상태
6 7 오형웅}
번호 이름
0 1 최영빈
1 2 김찬수
2 3 이준혁
3 4 최상준
4 5 임길수
5 6 이상태
6 7 오형웅
{'1학년': 번호 이름
0 1 김이슬
1 2 박예빈
2 3 최솔찬
3 4 이우혁
4 5 강남진
5 6 길일수
6 7 오진영, '2학년': 번호 이름
0 1 최영빈
1 2 김찬수
2 3 이준혁
3 4 최상준
4 5 임길수
5 6 이상태
6 7 오형웅}