pandas (Part 2)


Today I Learned


毎日習ったことを整理して記録する.
PandasのデータI/Oを学びました.

1.外部ファイルのインポート


Pandasは、異なるフォーマットの外部ファイルを読み込むことでデータフレームに変換できる関数を提供します.
pandasオブジェクトのデータフレームとしてpandasのすべての関数と機能を使用できます.

1-1. CSV(comma-separated values) - read_csv()

  • 列をカンマで区切り、行
  • を改行で区切ります.
  • CSVファイル->データフレーム:pandas.read csv(「ファイルパス(名前))
  • CSVおよびフィールド区切り記号に基づく任意のファイルフォーマットは、sepに対応する区切り記号
  • を入力するだけでDataFrameに変換することができる.
  • ヘッダー・オプション列名として使用する行を指定します.
    ex)
    header=0(デフォルト:0行開く)
    header=1(列1行指定)
    header=None(非列)
  • index colオプションを使用して、行インデックスが存在する列を指定します.
    ex)
    index col=Fasle(デフォルト、インデックスは指定されていません)
    index="c 0"("c 0"列をインデックスとする)
  • import pandas as pd
    
    file_path = './read_csv_sample.csv'
    
    df1 = pd.read_csv(file_path)
    print(df1)
    #    c0   c1   c2   c3
    # 0   0    1    4    7
    # 1   1    2    5    8
    # 2   2    3    6    9
    print('\n')
    
    df2 = pd.read_csv(file_path, header=None)
    print(df2)
    #     0    1    2    3
    # 0  c0   c1   c2   c3
    # 1   0    1    4    7
    # 2   1    2    5    8
    # 3   2    3    6    9
    print('\n')
    
    df3 = pd.read_csv(file_path, index_col=None)
    print(df3)
    #    c0   c1   c2   c3
    # 0   0    1    4    7
    # 1   1    2    5    8
    # 2   2    3    6    9
    print('\n')
    
    df4 = pd.read_csv(file_path, index_col='c0')
    print(df4)
    #      c1   c2   c3
    # c0
    # 0     1    4    7
    # 1     2    5    8
    # 2     3    6    9
    

    1-2. Excel - read_excel()

  • Excelファイルの行と列は、データフレームの行と列に1つずつ対応する
  • Excelファイル->データフレーム:pands.read excel(「ファイルパス(名前))
  • 1-3. JSON - read_json()

  • JSONファイルは、データ共有のために開発された特殊なファイルフォーマット
  • である.
  • JSONファイル->データフレーム:pands.read json(「ファイルパス(名前))
  • 2.Webからの導入


    2-1. HTMLページからの表プロパティーのインポート-read html

  • HTMLページ上のテーブルラベルですべてのテーブル形式のデータを検索し、データフレーム
  • に変換する.
  • のテーブルデータは、個別のデータフレームに変換するので、リスト
  • に戻る.
  • HTMLテーブルのプロパティ:pandasを読み込みます.read html(「Webアドレス(URL)」または「HTMLファイルパス(名称)」)
  • 2-2. Webスクリプト(キャプチャ)

  • 作成したコンテンツをPythonリスト、DickShowneryなどにまとめ、DataFrame()関数に入れて
  • に変換する.

    3.APIによるデータ収集


    4.データの保存


    4-1 . CSVファイルとして保存-to csv()

  • CSVファイル:DataFrameオブジェクトとして保存します.to csv(「ファイル名(パス))
  • データフレームは、2次元配列の構造化データであるため、2次元構造を有するCSVファイル
  • に変換することができる.
    import pandas as pd
    
    # 판다스 DataFrame() 함수로 데이터프레임 변환. 변수 df에 저장
    data = {'name': ['Jerry', 'Riah', 'Paul'],
            'algol': ["A", "A+", "B"],
            'basic': ["C", "B", "B+"],
            'c++': ["B+", "C", "C+"],
            }
    
    df = pd.DataFrame(data)
    df.set_index('name', inplace=True)  # name 열을 인덱스로 지정
    print(df)
    #       algol basic c++
    # name
    # Jerry     A     C  B+
    # Riah     A+     B   C
    # Paul      B    B+  C+
    
    #! to_csv() 메소드를 사용하여 CSV 파일로 내보내기. 파열명은 df_sample.csv로 저장
    df.to_csv("./df_sample.csv")
    # df_sample.csv 파일
    # name,algol,basic,c++
    # Jerry,A,C,B+
    # Riah,A+,B,C
    # Paul,B,B+,C+
    
  • df.to csv("./df sample.csv")で作成したdf sample.csvファイル

  • 4-2. JSONファイルとして保存-to json()

  • JSONファイル:DataFrameオブジェクトとして保存します.to json(「ファイル名(パス))
  • 4-3. Excelファイルとして保存-to excel()

  • Excelファイル:DataFrameオブジェクトとして保存します.to excel(「ファイル名(パス))
  • 4-4. 複数のデータフレームを1つのExcelファイルとして保存する-Excel Writer()

  • Excelワークブックオブジェクト:pandasを作成します.Excel Writer(「ファイルパス」)
  • を挿入するワークブックオブジェクトと図面の場所:DataFrameオブジェクトを指定します.to excel(ワークブックオブジェクト、sheet name=「図面名」)
  • # -*- coding: utf-8 -*-
    
    import pandas as pd
    
    # 판다스 DataFrame() 함수로 데이터프레임 변환. 변수 df1, df2에 저장
    data1 = {'name': ['Jerry', 'Riah', 'Paul'],
             'algol': ["A", "A+", "B"],
             'basic': ["C", "B", "B+"],
             'c++': ["B+", "C", "C+"]}
    
    data2 = {'c0': [1, 2, 3],
             'c1': [4, 5, 6],
             'c2': [7, 8, 9],
             'c3': [10, 11, 12],
             'c4': [13, 14, 15]}
    
    df1 = pd.DataFrame(data1)
    df1.set_index('name', inplace=True)  # name 열을 인덱스로 지정
    print(df1)
    print('\n')
    #       algol basic c++
    # name
    # Jerry     A     C  B+
    # Riah     A+     B   C
    # Paul      B    B+  C+
    
    df2 = pd.DataFrame(data2)
    df2.set_index('c0', inplace=True)  # c0 열을 인덱스로 지정
    print(df2)
    #     c1  c2  c3  c4
    # c0
    # 1    4   7  10  13
    # 2    5   8  11  14
    # 3    6   9  12  15
    
    # df1을 'sheet1'으로, df2를 'sheet2'로 저장 (엑셀파일명은 "df_excelwriter.xlsx")
    writer = pd.ExcelWriter("./df_excelwriter.xlsx")
    df1.to_excel(writer, sheet_name="sheet1")
    df2.to_excel(writer, sheet_name="sheet2")
    writer.save()
    

  • sheet 1


  • sheet 2

  • 参考:呉勝煥、『Python機械学習版データ分析』、情報文化社(2019)、p 058-080.