pandas
는 데이터 조작 및 분석을 위한 Python
프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리
위키피디아
pandas.DataFrame.to_json() / pandas.DataFrame.read_json()
import pandas as pd
import pprint
import json
df= pd.DataFrame({'col1':[1,2,3], 'col2':['a','x','가']},
index=['row1','row2','row3'])
df
col1 col2
row1 1 a
row2 2 x
row3 3 가key,value형식이며 index(row)이름을 설정할 수 있다.
print(df.to_json())
print(type(df.to_json())) # str 타입
#row3 : \uac00 = 문자열로 변환됨
{"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"a","row2":"x","row3":"\uac00"}}
<class 'str'>
from google.colab import drive
drive.mount('/content/gdrive')
코랩을 이용하고 있어서 mount시켜준다.
출력값 : Mounted at /content/gdrive
%cd /content/gdrive/My Drive/test
디렉토리 변경 MyDrive의 test폴더로 경로를 잡아준다.
path ='경로/mydf.json'
df.to_json(path)
path를 json(mydf.json)으로 만든다.
with open(path) as f:
s = f.read()
print(s)
print(type(s))
path의 내용을 읽는다. row3=\uac00(유니코드)로 출력된다.
# encoding = 'unicode-escape'
with open(path,encoding = 'unicode-escape') as f:
s = f.read()
print(s)
print(type(s))
"row3" : "가" 문자로 출력된다.
<class 'str'>
with open(path) as f:
s = json.load(f) #json형식으로 읽는다.
print(s)
print(type(s))
'row3' : '가'
<class 'dict'>
여기서 중요한 점!
f.read 하였을 때는 "" 문자열로 읽었고
json.load(f) 하였을 때는 '' dict 형식으로 읽어서 출력하였다.
df_read = pd.read_json(path) #json형식으로 읽는다.
print(df_read)
print(type(df_read))
col1 col2
row1 1 a
row2 2 x
row3 3 가
<class 'pandas.core.frame.DataFrame'>
df.to_json('경로/mydf_res.gz',compression='gzip')
압축 형식
compression : {'infer', 'gzip', 'bz2', 'zip', 'xz', None}
compression = 으로 압축형식 지정
orient pandas.DataFrame, index -> [index], columns -> [columns] , data -> [values]
print(df.to_json(orient='split'))
pprint.pprint(json.loads(df.to_json(orient='split')))
{"columns":["col1","col2"],"index":["row1","row2","row3"],"data":[[1,"a"],[2,"x"],[3,"\uac00"]]}
{'columns': ['col1', 'col2'],
'data': [[1, 'a'], [2, 'x'], [3, '가']],
'index': ['row1', 'row2', 'row3']}coulmns, index, data 형식으로 프레임 분철
# allowed values are: {'split', 'records', 'index', 'columns', 'values', 'table'}.
print(df.to_json(orient='records'))
pprint.pprint(json.loads(df.to_json(orient='records')), width=40)
[{"col1":1,"col2":"a"},{"col1":2,"col2":"x"},{"col1":3,"col2":"\uac00"}]
{'row1': {'col1': 1, 'col2': 'a'},
'row2': {'col1': 2, 'col2': 'x'},
'row3': {'col1': 3, 'col2': '가'}}여기서 width는 무시해도 된다.(출력 잘나오게하려고 한것)
레코드(행)로 출력
print(df.to_json(orient='index'))
pprint.pprint(json.loads(df.to_json(orient='index')), width=40)
{"row1":{"col1":1,"col2":"a"},"row2":{"col1":2,"col2":"x"},"row3":{"col1":3,"col2":"\uac00"}}
{'row1': {'col1': 1, 'col2': 'a'},
'row2': {'col1': 2, 'col2': 'x'},
'row3': {'col1': 3, 'col2': '가'}}
print(df.to_json(orient='values'))
pprint.pprint(json.loads(df.to_json(orient='values')), width=40)
[[1,"a"],[2,"x"],[3,"\uac00"]]
[[1, 'a'], [2, 'x'], [3, '가']]
print(df.to_json(orient='table'))
pprint.pprint(json.loads(df.to_json(orient='table')), width=40)
{"schema":{"fields":[{"name":"index","type":"string"},{"name":"col1","type":"integer"},{"name":"col2","type":"string"}],"primaryKey":["index"],"pandas_version":"0.20.0"},"data":[{"index":"row1","col1":1,"col2":"a"},{"index":"row2","col1":2,"col2":"x"},{"index":"row3","col1":3,"col2":"\uac00"}]}
{'data': [{'col1': 1,
'col2': 'a',
'index': 'row1'},
{'col1': 2,
'col2': 'x',
'index': 'row2'},
{'col1': 3,
'col2': '가',
'index': 'row3'}],
'schema': {'fields': [{'name': 'index',
'type': 'string'},
{'name': 'col1',
'type': 'integer'},
{'name': 'col2',
'type': 'string'}],
'pandas_version': '0.20.0',
'primaryKey': ['index']}}
df = pd.read_csv('경로/파일.csv')
df
csv파일 dataFrame 형식으로 출력
type(df)
df.head()
df['OO'].head(3)
# shape확인
df.shape
# 통계 함수들의 대략적인 값을 확인
df.describe()
# 상관계수를 출력 해보자
df.corr()
# 해당 컬럼의 값을 정렬 sort_values(컬럼)
# OO 컬럼을 기준으로 오름차순 해보자.
res = df.sort_values('OO')
#해당 컬럼의 값을 정렬 sort_values(컬럼)
#OO 컬럼을 기준으로 내림차순 해보자.
res = df.sort_values('OO', ascending=False)
df.head()
df.iloc[0,0] # 0행 0열
df.iloc[1,1] # 1행 1열
df.iloc[:,-1].head(3)
result = df ['XX'] > 70000
result
result2 = (df['XX'] < 70000) | (df['XX'] > 80000) # | (논리합 연산자)
result2.head()
df.iloc[0,0] = None
df.head()
df_drop = df.dropna()
df_drop.head()
df의 0,0 자리를 None으로 변경
dropna() 로 None값 삭제
채울값 = df.mean() # 평균값을 채울값에 넣는다.
print(채울값)
df_fillna = df.fillna(채울값) # 누락된 데이터에 채울값을 추가
df_fillna.head()
pd.DataFrame()
: 판다스 데이터프레임 생성
to_json()
: json형식으로 변환
json.load()
: json형식으로 불러온다.
read_json()
: json형식으로 읽는다.
head()
: 기본 5줄 출력 / ()안에 숫자만큼 출력
to_csv()
: csv형식으로 변환
describe()
: 통계함수들의 대력적인 값 확인
corr()
: 상관계수 출력
sort_values()
: ()기준으로 오름차순
sort_values('컬럼', ascending=False)
: 컬럼기준으로 내림차순
loc
: column의 label이나 boolean array로 접근
iloc[]
: 인덱싱
dropna()
: None값 삭제 (누락데이터관리)
fillna()
: ()의 값을(변수) 넣고 누락된 값을 채운다.
compression
의 종류 : {'infer', 'gzip', 'bz2', 'zip', 'xz', None}
allowed values
의 종류: {'split', 'records', 'index', 'columns', 'values', 'table'}