DataFrame.to_dict(orient='dict', into=)
to_dict 메서드는 데이터프레임 객체를 dict 형태로 변환하는 메서드 입니다.
df.to_dict(orient='dict', into=)
orient : 출력할 dict의 형태를 지정합니다. 형태는 아래와 같습니다.
dict : {열 : {행 : 값, 행 : 값}, 열 : {행 : 값, 행 : 값}
list : {열 : [ 값 ], 열 : [ 값 ] }
series : {열 : Series, 열 : Series}
split : { index : [ 행, 행 ], columns : [ 열, 열 ], data : [ 값, 값 ] }
records : [ { 열 : 값 , 열 : 값 }, { 열 : 값, 열 : 값 } ]
index : { 행 : {열 : 값, 열 : 값}, 행 : {열 : 값, 열 : 값} }
into : 반환값의 모든 매핑에 사용되는 collections.abc.Mapping 하위클래스입니다.
먼저 기본적인 사용법 예시를위하여 2x2 데이터를 만들어 보겠습니다.
코드
df = pd.DataFrame([[1,2],[3,4]], columns=['col1','col2'],index=['row1','row2'])
print(df)
실행 결과

orient 인수를 설정함으로써 출력되는 dict객체의 형태를 정할 수 있습니다.
orient = 'dict'인 경우 {열 : {행 : 값, 행 : 값}, 열 : {행 : 값, 행 : 값} 형태로 변환합니다.
코드
print(df.to_dict(orient='dict'))
실행 결과
{'col1': {'row1': 1, 'row2': 3}, 'col2': {'row1': 2, 'row2': 4}}
orient = 'list'인 경우 {열 : [ 값 ], 열 : [ 값 ] } 형태로 변환합니다.
코드
print(df.to_dict(orient='list'))
실행 결과
{'col1': [1, 3], 'col2': [2, 4]}
orient = 'series'인 경우 {열 : Series, 열 : Series} 형태로 변환합니다.
코드
print(df.to_dict(orient='series'))
실행 결과

orient = 'split'인 경우 { index : [ 행, 행 ], columns : [ 열, 열 ], data : [ 값, 값 ] } 형태로 변환합니다.
코드
print(df.to_dict(orient='split'))
실행 결과
{'index': ['row1', 'row2'], 'columns': ['col1', 'col2'], 'data': [[1, 2], [3, 4]]}
orient = 'records'인 경우 [ { 열 : 값 , 열 : 값 }, { 열 : 값, 열 : 값 } ] 형태로 변환합니다.
코드
print(df.to_dict(orient='records'))
실행 결과
[{'col1': 1, 'col2': 2}, {'col1': 3, 'col2': 4}]
orient = 'index'인 경우 { 행 : {열 : 값, 열 : 값}, 행 : {열 : 값, 열 : 값} } 형태로 변환합니다.
코드
print(df.to_dict(orient='index'))
실행 결과
{'row1': {'col1': 1, 'col2': 2}, 'row2': {'col1': 3, 'col2': 4}}
DataFrame.to_markdown(buf=None, mode='wt', index=True, storage_options=None, kwargs)
to_markdown은 DataFrame 객체를 마크다운 형식으로 변환해주는 메서드입니다.
df.to_markdown(buf=None, mode='wt', index=True, storage_options=None, kwargs)
buf : 쓸 버퍼입니다. 입력하지 않으면 문자열이 반환됩니다.
mode : 파일을 열때 모드입니다. 기본값은 'wt'입니다.
index : 인덱스를 출력할지 여부입니다. 기본값은 True입니다.
storage_options : 특정 스토리지 연결에 적합한 추가 옵션을 지정합니다. (예 : 호스트, 포트, 사용자 이름, 비밀번호 등)
kwargs : 추가 적용 가능한 tabulate의 키워드입니다.
먼저 기본적인 사용법 예시를위하여 2x2 데이터를 만들어 보겠습니다.
코드
df = pd.DataFrame([[1,2],[3,4]], columns=['col1','col2'],index=['row1','row2'])
print(df)
실행 결과

아무 인수 없이 df.to_markdown()을 실행하면 마크다운 형태의 값이 출력됩니다.
코드
print(df.to_markdown())
실행 결과

실제 Markdown으로 출력시 아래와 같이 출력 됩니다.
| | col1 | col2 | |:-----|-------:|-------:| | row1 | 1 | 2 | | row2 | 3 | 4 |
index=False로 입력할 경우 인덱스가 제외됩니다.
코드
print(df.to_markdown(index=False))
실행 결과

kwargs에 tabulate의 인수들의 사용이 가능합니다.
코드
print(df.to_markdown(tablefmt='fancy_grid'))
실행 결과

DataFrame.to_pickle(path, compression='infer', protocol=5, storage_options=None)
to_pickle메서드는 데이터객체를 Pickle 형식으로 변환해주는 메서드입니다.
df.to_pickle(path, compression='infer', protocol=5, storage_options=None)
path : pickle 오브젝트가 저장될 경로 입니다.
compression : 출력 파일에서 사용할 압축을 나타내는 문자열입니다. 기본적으로 지정된 경로의 파일 확장자에서 추론합니다.
protocol : pickler가 사용해야 하는 프로토콜을 나타내는 Int로 기본값은 HIGHEST_PROTOCOL입니다.
자세한것은 pickle 라이브러리 12.1.2를 참고 바랍니다.
storage_options : 특정 스토리지 연결에 적합한 추가 옵션을 지정합니다.(예 : 호스트, 포트, 사용자 이름, 암호 등.)
먼저 기본적인 사용법 예시를위하여 2x2 데이터를 만들어 보겠습니다.
코드
df = pd.DataFrame([[1,2],[3,4]], columns=['col1','col2'],index=['row1','row2'])
print(df)
실행 결과

path에 주소와 파일명을 지정해주면 해당 객체를 pickle 객체로 변환하여 저장할 수 있습니다.
데이터 저장
코드
address='주소지정'
df.to_pickle(address+'test1.pkl')
코드
address='주소지정'
df2 = pd.read_pickle(address+'test1.pkl') #불러오기
print(df2)
실행 결과

DataFrame.to_html(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None, float_format=None, sparsify=None, index_names=True, justify=None, max_rows=None, max_cols=None, show_dimensions=False, decimal='.', bold_rows=True, classes=None, escape=True, notebook=False, border=None, table_id=None, render_links=False, encoding=None)
to_html메서드는 데이터프레임 객체를 html 문법으로 변환하는 메서드 입니다.
df.(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None, float_format=None, sparsify=None, index_names=True, justify=None, max_rows=None, max_cols=None, show_dimensions=False, decimal='.', bold_rows=True, classes=None, escape=True, notebook=False, border=None, table_id=None, render_links=False, encoding=None)
buf : 저장할 버퍼 입니다. None이면 문자열로 출력됩니다.
columns : 출력할 열을 지정합니다.
col_space : 열 너비를 지정합니다. 픽셀 단위 입니다.
header / index : 열/행 레이블의 출력 여부 입니다. False이면 출력하지 않습니다.
na_rep : 결측값의 표현 방식 입니다.
formatters : 포매터 함수를 통해 값의 포맷을 설정합니다. .format() 메서드도 사용 가능합니다.
float_format : 소수점 단위 자리수를 지정합니다. 기본은 마침표( . ) 입니다. sparsify : 각 행의 모든 다중 인덱스 키를 인쇄하려면 계층적 인덱스가 있는 DataFrame에 대해 False로 설정합니다.
index_names : 인덱스명을 출력할지를 정합니다.
justify : 정렬 방식을 지정합니다.
maxrows : 최대 출력할 줄 수를 지정합니다. 초과되는 줄은 ( ... )형태로 축약됩니다.
maxcols : 최대 출력할 열 수를 지정합니다. 초과되는 줄은 ( ... )형태로 축약됩니다.
minrow : maxrows로인해 잘린 표현을 표시할 수 입니다.
show_dimensions : 출력된 html 객체 아래에 데이터 객체의 차원을 출력합니다.
decimal : 1000단위 구분기호로 인식되는 문자를 지정합니다.
bold_rows : 출력에서 행 레이블을 굵게할지 여부입니다. 기본은 True입니다.
classes 결과 html의 table에 적용할 css 클래스를 지정합니다.
escape : 문자 <, > 및 &를 HTML 안전 시퀀스로 변환합니다. 즉 문자를 HTML 문법이 아닌 문자 그대로 출력합니다.
notebook : 생성된 HTML이 IPython Notebook용인지 여부입니다. 기본은 False입니다.
border : 테두리의 두께를 지정합니다.
encoding : 인코딩을 지정합니다.
table_id : css의 table id를 설정합니다.
render_links : url을 html 링크로 변환합니다.
먼저 기본적인 사용법 예시를위하여 3x2 짜리 데이터를 만들어 보겠습니다.
코드
data = [[1,np.nan],['A',4.179],['<&>',32000]]
df = pd.DataFrame(data,columns=['col1','col2'])
df=df.rename_axis(columns='index')
print(df)
실행 결과

기본적으로 아무 입력값 없이 실행 할 경우 str 형식으로 반환됩니다.
코드
print(df.to_html())
실행 결과


columns인수는 출력할 열을 지정합니다. 리스트 형태로 입력이 가능합니다.
코드
print(df.to_html(columns=['col1']))
col1열만 출력되는 것을 확인할 수 있습니다.
실행 결과

col_space인수는 열의 수와 같은 크기의 리스트를 이용해 각 열의 크기를 지정할 수 있습니다.
코드
print(df.to_html(col_space=[100,200]))
열의 크기가 100픽셀 x 200픽셀로 변경된 것을 알 수 있습니다.
실행 결과

header / index 인수는 각각 열/행 레이블의 출력 여부를 지정하는 인수 입니다. 기본값은 True입니다.
코드
print(df.to_html(header=False, index=False))
둘다 False로 입력하자 인덱스가 출력되지 않은것을 확인할 수 있습니다.
실행 결과

na_rep인수는 결측값을 어떤 문자로 출력할지 지정하는 메서드 입니다.
코드
print(df.to_html(na_rep="결측값"))
NaN이 결측값으로 출력된 것을 확인할 수 있습니다.
실행 결과

formatter 인수에 함수를 이용하여 값의 포맷을 변경할 수 있습니다.
예시를 위해 datetime을 포함하는 데이터프레임 객체를 생성하겠습니다.
코드
time = pd.to_datetime(['16:04:33.500','17:30:00.000'],format='%H:%M:%S.%f')
x = pd.DataFrame({'col':time})
print(x)
실행 결과

이제 형식을 변환하는 함수를 작성하여 formatter함수에 적용해보겠습니다.
코드
def format_func(x):
return x.strftime('%H:%M')
result = x.to_html(formatters={'col':format_func})
print(result)
시:분:초:각초 형식의 데이터를 시:분 형태로 html 변환이 실행된 것을 확인할 수 있습니다.
실행 결과

float_format인수를 이용해 소수점 표현방식을 포매터 함수를 이용해서 지정할 수 있습니다.
코드
print(df.to_html(float_format='{0:.2g}'.format))
4.197이 표현식에따라 4.2로, 32000이 표현식에 따라 3.2e+04로 출력된 것을 확인할 수 있습니다.
실행 결과

index_names 인수를 이용해 인덱스명의 출력 여부를 지정할 수 있습니다. 기본값은 True 입니다.
코드
print(df.to_html(index_names=False))
인덱스명으로 입력되었던 Index가 출력되지 않은 것을 확인할 수 있습니다.
실행 결과

justify 인수를 통해 정렬 방식을 지정할 수 있습니다.
{left / right / center / justify / justify-all / start / end / inherit / match-parent / initial / unset}
코드
print('====='+'left'+'='*20) # 구분을 위해 입력한 값입니다.
print(df.to_html(col_space=[100,100], justify='left'))
print('====='+'right'+'='*20)
print(df.to_html(col_space=[100,100], justify='right'))
print('====='+'center'+'='*20)
print(df.to_html(col_space=[100,100], justify='center'))
인덱스의 정렬방식이 각각 왼쪽정렬, 오른쪽 정렬, 가운데 정렬이 된것을 확인할 수 있습니다.
실행 결과

maxrow인수는 최대 출력줄 수를 지정하는 인수입니다. 초과되는 수의 열은 (...) 형태로 축약됩니다.
코드
print(df.to_html(max_rows=2))
실행 결과

maxcol인수는 최대 출력열 수를 지정하는 인수입니다. 초과되는 수의 열은 (...) 형태로 축약됩니다.
코드
print(df.to_html(max_cols=1))
실행 결과

show_dimensions 인수를 통해 데이터 객체의 차원을 추가로 출력할 수 있습니다.
코드
print(df.to_html(show_dimensions=True))
실행 결과

decimal 인수를 이용하여 10,000 같이 1000단위수의 구분기호로 사용되는 콤마( , )를 다른 문자로 변경 할 수 있습니다.
코드
print(df.to_html(decimal='_'))
1000단위 구분기호인 콤마( , )가 언더바( _ )로 변경된 것을 확인할 수 있습니다.
실행 결과

bold_rows인수를 이용해서 출력의 행 레이블을 굵게 설정할지 여부를 지정할 수 있습니다. 기본값은 True입니다.
코드
print(df.to_html(bold_rows=False))
행 레이블이 기본값인 굵게 에서 보통으로 바뀐것을 확인할 수 있습니다.
실행 결과

classes인수를 이용해서 html의 table에 적용할 css 클래스를 지정할 수 있습니다.
코드
print(df.to_html(classes='test'))
실행 결과

escape인수를 이용하여문자 <, > 및 &를 HTML 안전 시퀀스로 변환합니다.
즉, 문자를 HTML 문법이 아닌 문자 그대로 출력합니다. 기본값은 True 입니다.
코드
print(df.to_html(escape=False))
기존 데이터의 <&>가 html 문법으로 출력되어 오류가 발생한 것을 확인 할 수 있습니다.
실행 결과

border인수는 테두리의 두께를 지정하는 인수입니다.
코드
print(df.to_html(border=2))
두께가 두껍게 출력된 것을 확인할 수 있습니다.
실행 결과

table_id인수를 이용해 css로 table의 id를 설정할 수 있습니다.
코드
print(df.to_html(table_id='test'))
실행 결과

DataFrame.to_string(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None, float_format=None, sparsify=None, index_names=True, justify=None, max_rows=None, max_cols=None, show_dimensions=False, decimal='.', line_width=None, min_rows=None, max_colwidth=None, encoding=None)
to_string 메서드는 데이터 객체를 단순 string 형태로 변형하는 메서드입니다.
df.to_string(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None, float_format=None, sparsify=None, index_names=True, justify=None, max_rows=None, max_cols=None, show_dimensions=False, decimal='.', line_width=None, min_rows=None, max_colwidth=None, encoding=None)
buf : 저장할 버퍼 입니다. None이면 문자열로 출력됩니다.
columns : 출력할 열을 지정합니다.
col_space : 열 너비를 지정합니다. .
header / index : 열/행 레이블의 출력 여부 입니다. False이면 출력하지 않습니다.
리스트 형태로 입력하여 레이블명의 변경이 가능합니다.
na_rep : 결측값의 표현 방식 입니다.
formatters : 포매터 함수를 통해 값의 포맷을 설정합니다. .format() 메서드도 사용 가능합니다.
float_format : 소수점 단위 자리수를 지정합니다. 기본은 마침표( . ) 입니다.
※ formatters / float_format 의 사용법은 19-07 html형태 변환to_html 에 자세히 설명 되어있으므로 참고 바랍니다.
sparsify : 각 행의 모든 다중 인덱스 키를 인쇄하려면 계층적 인덱스가 있는 DataFrame에 대해 False로 설정합니다.
index_names : 인덱스명을 출력할지를 정합니다.
justify : 정렬 방식을 지정합니다.
maxrows : 최대 출력할 줄 수를 지정합니다. 초과되는 줄은 ( ... )형태로 축약됩니다.
maxcols : 최대 출력할 열 수를 지정합니다. 초과되는 줄은 ( ... )형태로 축약됩니다.
show_dimensions : 출력된 html 객체 아래에 데이터 객체의 차원을 출력합니다.
decimal : 1000단위 구분기호로 인식되는 문자를 지정합니다.
linewidth : 문자로 줄바꿈할 너비 입니다.
minrow : maxrows로인해 잘린 표현을 표시할 수 입니다.
max_colwidth : 각 열을 문자열로 자르기 위한 최대 너비입니다. 기본값은 무제한 입니다.
encoding : 인코딩을 지정합니다.
먼저 기본적인 사용법 예시를위하여 3x2 데이터를 만들어 보겠습니다.
코드
data = [[1,np.nan],['A',4.179],['<&>',32000]]
df = pd.DataFrame(data,columns=['col1','col2'])
df=df.rename_axis(columns='index')
print(df)
실행 결과

to_string( )메서드를 사용하면 데이터 객체의 기본 타입인 pandas.core.frame.DataFrame을 string으로 변경합니다.
코드
print(df.to_string())
실행 결과

코드
print(type(df))
실행 결과
print(type(df))
코드
print(type(df.to_string()))
실행 결과
<class 'str'>
columns 인수를 입력하여 특정 열만 출력이 가능합니다. list 형태로 입력하여야합니다
코드
print(df.to_string(columns=['col2'])) # col2만 출력
실행 결과

col_space 인수를 입력하여 열 너비를 지정할 수 있습니다.
코드
print(df.to_string(col_space=[10,20]))
실행 결과

header 인수를 입력하여 열 이름을 지정할 수 있습니다. True 나 False, None를 입력하여 출력 여부를 설정할 수도 있습니다.
코드
print(df.to_string(header=['val1','val2']))
실행 결과

index 인수를 이용해 index의 출력 여부를 정할 수 있습니다.
코드
print(df.to_string(index=False))
실행 결과

na_rep인수를 입력하여 결측치(NaN등)의 표현값을 변경할 수 있습니다.
코드
print(df.to_string(na_rep='결측'))
실행 결과

index_names를 설정함으로서 인덱스명의 출력 여부를 정할 수 있습니다. 기본값은 True입니다.
col1 col2 # 인덱스명이 출력되지 않음 0 1 NaN 1 A 4.179 2 <&> 32000.000
코드
<br>
**justify 인수의 사용**<bR>
`justify` 인수를 사용해 인덱스를 정렬할 수 있습니다.<br>
사용 가능한 값 : {left / right / center / justify / justify-all / start / end / inherit / match-parent / initial / unset}<br>
print(df.to_string(justify='left'))
실행 결과

max_raws / max_cols 인수를 사용해 출력할 최대 행/열 수를 지정할 수 있습니다. 초과분은 ( ... )로 함축되어 표현됩니다.
코드
print(df.to_string(max_rows=2))
실행 결과

코드
print(df.to_string(max_cols=1))
실행 결과

show_dimensions인수를 이용하여 데이터의 차원을 출력할 수 있습니다.
코드
print(df.to_string(show_dimensions=True))
실행 결과

decimal인수를 사용하여 1000단위 표현값을 지정할 수 있습니다. 기본값은 콤마( , ) 입니다.
코드
print(df.to_string(decimal='_'))
실행 결과

linde_width인수값을 입력하여 줄바꿈할 열의 너비를 지정할 수 있습니다.
코드
print(df.to_string(line_width=2))
실행 결과

max_colwidth 인수를 이용하여 열 내의 문자열 길이를 제한할 수 있습니다. 초과하는 문자는 ( ... ) 으로 함축됩니다.
코드
print(df.to_string(max_colwidth=5))
실행 결과

DataFrame.values
DataFrame.to_numpy를 사용하는것을 추천합니다.
DataFrame 요소를 Numpy 형태(numpy.ndarray)로 반환합니다. 레이블은 삭제됩니다.
df.values
먼저, 아래와 같이 기본적인 4x4 행렬을 만듭니다. col1은 숫자, col2는 문자, col3은 float, col4는 bool의 dtype을 가집니다.
코드
col1 = [1, 2, 3, 4]
col2 = ['one', 'two', 'three', 'four']
col3 = [1.5, 2.5, 3.5, 4.5]
col4 = [True, False, False, True]
index = ['row1','row2','row3','row4']
df = pd.DataFrame(index=index, data={"col1": col1, "col2": col2, "col3": col3, "col4": col4})
print(df)
실행 결과

여기에 values함수를 적용할 경우 아래와 같은 결과가 반환됩니다. 결과값은 numpy.ndarray형태로
반환되며, 레이블이 사라진것을 확인할 수 있습니다.
코드
result = df.values
print(result)
실행 결과

DataFrame.DataFrame.from_dict(data, orient='columns', dtype=None, columns=None)
from_dict메서드는 dict객체로부터 DataFrame 객체로 변환하는 메서드입니다.
df.from_dict(data, orient='columns', dtype=None, columns=None)
data : dict 형태의 데이터 입니다.
orient : {index / columns / tight} 변환 방식입니다. index은 행을 키값으로 지정, columns는 열을 키값으로 지정, tight는 키값으로 [index / columns / data / index_names / columns_names] 를 가집니다.
dtype : 데이터의 type을 강제로 지정할 수 있습니다.
columns : index인수를 사용할 경우 columns인수를 통해 열 이름을 지정할 수 있습니다.
기본적인 사용법
orient인수의 기본값은 'columns'로 키값으로 열 이름을 사용하게 됩니다.
코드
data = {'col1':[1,3],'col2':[2,4]}
df = pd.DataFrame.from_dict(data=data, orient='columns')
print(df)
실행 결과

orient인수가 'index'인 경우 키 값으로 행 이름을 사용하게 됩니다.
코드
data = {'row1':[1,2],'row2':[3,4]}
df = pd.DataFrame.from_dict(data=data, orient='index')
print(df)
실행 결과

orient인수가 'index'인 경우 columns인수를 통해 열 이름을 추가로 설정할 수 있습니다.
코드
data = {'row1':[1,2],'row2':[3,4]}
df = pd.DataFrame.from_dict(data=data, orient='index', columns=['col1','col2'])
print(df)
실행 결과

dtype 인수를 이용하면 값의 type을 강제로 지정할 수 있습니다.
코드
data = {'row1':[1,2],'row2':[3,4]}
df = pd.DataFrame.from_dict(data=data, orient='index', columns=['col1','col2'],dtype='float')
print(df)
실행 결과

orient='tight'인 경우 'index' / 'columns' / 'data' / 'index_names' / 'column_names'를 키 값으로 지정하여 세부내용을 설정 할 수 있습니다.
※1.4.0 버전부터만 사용 가능합니다.
코드
data = {'index' : [('idx1','row1'),('idx1','row2')], # 인덱스 이름 설정, 멀티 인덱스 가능
'columns' : [('col1','val1'),('col2','val2')], # 열 이름 설정, 멀티 컬럼 가능
'data' : [[1,2],[3,4]], # 데이터 값 설정
'index_names' : ['I1','I2'], # 인덱스명 설정
'column_names' : ['C1','C2']} # 컬럼명 설정
df = pd.DataFrame.from_dict(data=data, orient='tight')
print(df)
실행 결과
