Python for Process Innovation
#Python, #Javascript, #SAP, #Automation, #ML, #AI
Stackoverflow는 파이썬으로 어플리케이션 개발을 하건 데이터를 다루건 반드시 접하게 되는 개발자들의 질문/답변 사이트입니다. 따라서 이 글을 보시는 모든 분들도 당연히 알고 계시리라 생각합니다.
저도 python이나 pandas와 관련된 대한 답변을 작성할 때가 많은데요, 친절한 질문자들은 답변하는 사람들을 위해 복사하기/붙여넣기 쉬운 데이터를 항상 깔끔하게 첨부 해 줍니다. 부끄럽지만 예전엔 답변을 위한 테스트를 진행하기 위해 이를 메모장에 붙여넣고 txt나 csv로 저장 후 이 파일을 적절한 위치로 복사한 뒤에 pd.read_table, pd.read_csv를 사용하기도 했습니다.
하지만 이런 경우 io 모듈의 StringIO 오브젝트를 사용하면 좋습니다. 특히 아래와 같은 Stackoverflow용 Jupyter notebook을 하나 셋업해 놓고 필요할때마다 txt_table 부분만 바꿔서 사용하면 편리합니다.
from io import StringIO
txt_table=StringIO("""
id type tags theme
1 a col_t1, col_red, large t2
2 c NaN t1
3 d col_t2, col_black, small t2
4 a col_t4, large, col_yellow t3
5 b col_gold, col_fancy, t2
6 a col_t1, thick, col_k t1
7 a NaN NaN
8 c col_t3, fancy, red t3
""")
df = pd.read_csv(txt_table, sep='\s\s+')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
참고로 pd.read_clipboard()를 이용하면 클립보드의 자료를 바로 가져올 수 있기 때문에 StringIO보다 더더욱 편리할 수 있지만, 제 경우에는 실제 사용할 때 클립보드의 내용이 바뀌는 것을 (습관적으로) 인지하지 못할 때가 많아 의외로 불편한 경우가 더 많았습니다.