pandas를 사용하여 CSV 파일을 읽어보십시오.

csv 파일을 읽고 싶습니다.



인간 누구나 한번은 csv 파일을 읽고 싶을 때가 있기 때문에, 이번은 python의 모듈로, 데이터 해석 툴의 하나인 pandas를 이용해 csv 파일 읽어들이는 간단한 프로그램을 시작해 보았습니다.

동작 개요



파일명을 입력하면, 같은 계층에 있는 대응한 데이터 파일을 읽어 주도록(듯이) 했습니다. (진짜는 드래그 앤 드롭으로 조금 데이터 읽고 싶었지만 갑자기 어려울 것 같아서…….)
데이터의 형태로서는, 콤마 단락으로 n행 2열(n은 임의), 1행째는 각 열의 카테고리명이 되고 있는 것을 상정하고(아래의 그림을 참조), 각 카테고리 이름을 문자열로 사용하여 첫 번째 열과 두 번째 열을 각각 list 형식으로 읽습니다.


데이터를 읽으려면 pandas의 read_csv를 사용했습니다. 이곳은 쉼표로 구분된 csv 파일을 읽을 수 있으며 심지어 첫 번째 열을 header로 인식해주는 편리한 것이 되고 있습니다.
 이어서, 존재하지 않는 파일명을 입력해 버렸을 경우에 에러 메세지를 표시해 프로그램을 정지하도록 해도 보았습니다. 이를 위해 os 모듈의 path.exists()를 사용합니다. 여기는 입력한 파일이나 디렉토리가 존재하면 True를 반환합니다.

프로그램 구현



음, 실제 프로그램은 다음과 같습니다. 응용을 생각해 오브젝트 지향의 프로그램으로서 보았습니다만 어떻습니까.

csv_reader.py

import pandas as pd
import sys
import os

class csv_reader:
    #オーバーライドを前提としたread()メソッド
    def read(self,inputs):
        return 

class xy_csv_reader(csv_reader):
    def read(self,inputs):
        #インプットされた文字列をinputsに格納
        self.inputs = inputs

        #ファイルの存在を確認し、存在しなければエラーメッセージを表示しプログラムを終了。
        if not os.path.exists(self.inputs +".csv"):
            sys.exit('wrong name of csv')

        #ファイルの存在が確認できたら、pandasでデータの読み込み
        else:
            df = pd.read_csv(self.inputs +".csv")

            #ちゃんと読み込めたかデータを表示する。無くてもよい。
            print(df,"\n")

            #データの要素を格納し、返す
            xname = df.columns[0]
            yname = df.columns[1]
            list_x = df[xname].values
            list_y = df[yname].values
            return xname, yname ,list_x, list_y


실제로 움직여 보자.



모처럼 만들었으므로 움직여 봅시다. 아래와 같은 테스트 프로그램으로, 이전의 test3.csv 파일을 읽어 봅니다.

test.py

from csv_reader import *

#ファイル名を入力する
csvname = input('please input name of csv file> ')

#xy_csv_readerクラスのオブジェクトを生成
csv_reader = xy_csv_reader()

#データの読み込みを実行
xname, yname, list_x, list_y = csv_reader.read(csvname)

print(xname)
print(yname)
print(list_x)
print(list_y)


위의 테스트 프로그램을 실행하면 콘솔에 다음과 같이 표시되므로 여기에서 test3을 입력해 보겠습니다.



  그 결과는 다음과 같이 표시되었습니다. pandas에서 읽은 결과의 첫 번째 줄이 header가 되었고 데이터가 올바르게 읽혀지는 것을 알았습니다. 했어.



덧붙여서 존재하지 않는 파일명을 입력하면 다음과 같이 되었습니다. 이쪽도, 아무래도 올바르게 동작하고 있는 것 같습니다.



감상과 앞으로



이번에는 주로 pandas를 사용하여 csv 파일을 읽는 간단한 프로그램을 만들었습니다. 오브젝트 지향도 도입해 보았으므로, 조금은 스텝 업 할 수 있었을까라고 생각하고 있습니다. 앞으로는 데이터를 읽는 방법의 변형을 만들거나 읽은 데이터를 사용하여 데이터 분석을 할 수 있는 프로그램으로 확장 등을 해 나가고 싶습니다.

좋은 웹페이지 즐겨찾기