メインコンテンツへスキップ
見出し画像

Python CSVファイルを二次元配列に格納する方法3選!

    CSVに格納された情報を二次元配列に格納する方法3つを記載します。
    また、二次元配列からのデータの取り出し方を記載します。

    1.CSVを二次元配列に格納する方法

    ①方法1 pandas(ヘッダーなし)

    コード

    import pandas as pd
    
    lst = pd.read_csv("csv_test.csv").values.tolist()
    print(lst)

    実行結果

    [[2, 'test2', 'name', 'age'], [3, 'test3', 'name', 'age'], [4, 'test4', 'name', 'age'], [5, 'test5', 'name', 'age']]

    pd.read_csv("csv_test.csv")でファイル名のみ指定すると、1行目はヘッダーとして認識され読み込まれず、2行目から読み込まれます。


    ②方法2 pandas(ヘッダーあり)

    コード

    import pandas as pd
    
    lst = pd.read_csv("csv_test.csv", header=None).values.tolist()
    print(lst)

    実行結果

    [[1, 'test1', 'name', 'age'], [2, 'test2', 'name', 'age'], [3, 'test3', 'name', 'age'], [4, 'test4', 'name', 'age'], [5, 'test5', 'name', 'age']]

    pd.read_csv("csv_test.csv", header=None).という表記でheader=Noneを指定すると1行目も読み込んでくれます。


    ③方法3 csv

    コード

    import csv
    
    with open('csv_test.csv') as file:
        lst = list(csv.reader(file))
        print(lst)

    実行結果

    [['1', 'test1', 'name', 'age'], ['2', 'test2', 'name', 'age'], ['3', 'test3', 'name', 'age'], ['4', 'test4', 'name', 'age'], ['5', 'test5', 'name', 'age']]

    CSVライブラリでも読み込みが可能です。ただし、数値も文字列として認識されるようです。


    使い分け

    pandas:数値として利用したい値が含まれている場合
    csv:すべて文字列として読み込みたい場合

    2.二次元配列のデータの取り出し方

    コード

        for i in range(len(lst)):
            Date0 = lst[i][0]
            Date1 = lst[i][1]
            Date2 = lst[i][2]
            Date3 = lst[i][3]
    
            print(Date0)
            print(Date1)
            print(Date2)
            print(Date3)
            print("-----------------------")

    実行結果

    1
    test1
    name
    age
    -----------------------
    2
    test2
    name
    age
    -----------------------
    3
    test3
    name
    age
    -----------------------
    4
    test4
    name
    age
    -----------------------
    5
    test5
    name
    age
    -----------------------

    二次元配列[行番号][列番号]という構文で要素を指定し取り出せます。上記は行ごとにデータを取り出している例です。

     
     

    Mayada

     
     
    エンジニア 人間についての言語化を試みたい。 Funよりinterestingが好き

    あなたへのおすすめ