パンダファイルの読み取りと保存

パンダファイルの読み取りと保存


ほとんどのデータはファイルに存在するため、パンダは複雑なIO操作をサポートします。パンダAPIは、CSV、SQL、XLS、JSON、HDF5などの多くのファイル形式をサポートします。

注:最も一般的に使用されるHDF5およびCSVファイル

1 CSV

1.1 read_csv

  • pandas.read_csv(filepath_or_buffer、sep = '、'、usecols)

    • filepath_or_buffer:ファイルパス
    • sep:デフォルトで「、」で区切られたセパレータ
    • usecols:読み取る列の名前をリスト形式で指定します
  • 例:以前の株式データを読み取る

# 读取文件,并且指定只获取'open', 'close'指标
data = pd.read_csv("./data/stock_day.csv", usecols=['open', 'close'])

            open    close
2018-02-27    23.53    24.16
2018-02-26    22.80    23.53
2018-02-23    22.88    22.82
2018-02-22    22.25    22.28
2018-02-14    21.49    21.92

1.2 to_csv

  • DataFrame.to_csv(path_or_buf = None、sep = '、'、columns = None、header = True、index = True、mode = 'w'、encoding = None)

    • path_or_buf:ファイルパス
    • sep:デフォルトで「、」で区切られたセパレータ
    • 列:目的の列インデックスを選択します
    • ヘッダー:ブール値または文字列のリスト、デフォルトはTrue、列のインデックス値を書き込むかどうか
    • インデックス:インデックスに書き込むかどうか
    • モード:「w」:書き換え、「a」追加
  • 例:読み取った在庫データを保存する

    • 「開く」列にデータを保存し、結果を読み取って表示します
# 选取10行数据保存,便于观察数据
data[:10].to_csv("./data/test.csv", columns=['open'])
# 读取,查看结果
pd.read_csv("./data/test.csv")

     Unnamed: 0    open
0    2018-02-27    23.53
1    2018-02-26    22.80
2    2018-02-23    22.88
3    2018-02-22    22.25
4    2018-02-14    21.49
5    2018-02-13    21.40
6    2018-02-12    20.70
7    2018-02-09    21.20
8    2018-02-08    21.79
9    2018-02-07    22.69

インデックスをファイルに保存すると、データの単一の列になることがわかります。削除する必要がある場合は、インデックスパラメータを指定し、元のファイルを削除して、再度保存することができます。

# index:存储不会讲索引值变成一列数据
data[:10].to_csv("./data/test.csv", columns=['open'], index=False)

2 HDF5

2.1 read_hdf与to_hdf

HDF5ファイルの読み取りと保存にはキーを指定する必要があります。値は保存されるDataFrameです。

  • pandas.read_hdf(path_or_buf、key = None、** kwargs)

    h5ファイルからデータを読み取る

    • path_or_buffer:ファイルパス
    • キー:読み取りキー
    • 戻り値:選択されたオブジェクト
  • DataFrame.to_hdf(path_or_buf、  key、  * \ kwargs *)

2.2ケース

  • ファイルを読む
day_close = pd.read_hdf("./data/day_close.h5")

読み取り時に以下のエラーが発生した場合

HDF5ファイルを読み取れないようにするには、tablesモジュールをインストールする必要があります

pip install tables

  • ファイルを保存する
day_close.to_hdf("./data/test.h5", key="day_close")

もう一度読むときは、キーの名前を指定する必要があります

new_close = pd.read_hdf("./data/test.h5", key="day_close")

注:HDF5ファイルストレージが推奨されます

  • HDF5は、保存時に圧縮をサポートします。使用される方法はbloscです。これは最速であり、デフォルトでパンダでサポートされています。
  • 圧縮を使用してディスク使用率改善し、スペースを節約します
  • HDF5もクロスプラットフォームであり、hadoopに簡単に移行できます。

3 JSON

JSONは一般的に使用されるデータ交換形式であり、フロントエンドとバックエンドの相互作用でよく使用されます。この形式は保存時にも選択されます。したがって、PandasがJSON形式をどのように読み取って保存するかを知る必要があります。

3.1 read_json

  • pandas.read_json(path_or_buf = None、orient = None、typ = 'frame'、lines = False)

    • JSON形式をデフォルトのPandasDataFrame形式に変更します
    • orient:string、予想されるJSON文字列形式の表示。
      • 'split':dict like {index->​​ [index]、columns-> [columns]、data-> [values]}
        • Splitは、インデックスをインデックスに、列名を列名に、データをデータに要約します。3つの部分を分離しました
      • 'records':[{column-> value}、...、{column-> value}]のようなリスト
        • レコードcolumns:valuesは次の形式で出力さます
      • 'index':dict like {index->​​ {column-> value}}
        • インデックスindex:{columns:values}...は次の形式で出力さます
      • 'columns':dict like {column-> {index->​​ value}}、デフォルトの形式
        • columns:{index:values}の形で出力される列
      • 'values':値の配列のみ
        • 値直接出力値
    • 行:ブール値、デフォルトはFalse
      • 各行に従ってjsonオブジェクトを読み取ります
    • typ:デフォルトの「フレーム」。シリーズまたはデータフレームに変換されるオブジェクトタイプを指定します

    3.2read_josnの場合

  • データ紹介

ここでは、ニュースの見出しの風刺データセットが使用されています。形式はjsonです。is_sarcastic:1は皮肉で、それ以外の場合は0 headline;:ニュースレポートのタイトル;:article_link元のニュース記事へのリンク。ストレージ形式は次のとおりです。

{"article_link": "https://www.huffingtonpost.com/entry/versace-black-code_us_5861fbefe4b0de3a08f600d5", "headline": "former versace store clerk sues over secret 'black code' for minority shoppers", "is_sarcastic": 0}
{"article_link": "https://www.huffingtonpost.com/entry/roseanne-revival-review_us_5ab3a497e4b054d118e04365", "headline": "the 'roseanne' revival catches up to our thorny political mood, for better and worse", "is_sarcastic": 0}
  • 読んだ

Orientは保存されたjson形式を指定し、linesはlineに従ってサンプルになることを指定します

json_read = pd.read_json("./data/Sarcasm_Headlines_Dataset.json", orient="records", lines=True)

3.3 to_json

  • DataFrame.to_json(path_or_buf = None、  orient = None、  lines = False
    • Pandasオブジェクトをjson形式で保存する
    • path_or_buf = None:ファイルアドレス
    • orient:保存されたjsonフォーム、{'split'、 'records'、 'index'、 'columns'、 'values'}
    • 行:オブジェクトは行として保存されます

3.4ケース

  • ファイルを保存する
json_read.to_json("./data/test.json", orient='records')

結果

[{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/versace-black-code_us_5861fbefe4b0de3a08f600d5","headline":"former versace store clerk sues over secret 'black code' for minority shoppers","is_sarcastic":0},{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/roseanne-revival-review_us_5ab3a497e4b054d118e04365","headline":"the 'roseanne' revival catches up to our thorny political mood, for better and worse","is_sarcastic":0},{"article_link":"https:\/\/local.theonion.com\/mom-starting-to-fear-son-s-web-series-closest-thing-she-1819576697","headline":"mom starting to fear son's web series closest thing she will have to grandchild","is_sarcastic":1},{"article_link":"https:\/\/politics.theonion.com\/boehner-just-wants-wife-to-listen-not-come-up-with-alt-1819574302","headline":"boehner just wants wife to listen, not come up with alternative debt-reduction ideas","is_sarcastic":1},{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/jk-rowling-wishes-snape-happy-birthday_us_569117c4e4b0cad15e64fdcb","headline":"j.k. rowling wishes snape happy birthday in the most magical way","is_sarcastic":0},{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/advancing-the-worlds-women_b_6810038.html","headline":"advancing the world's women","is_sarcastic":0},....]
  • linesパラメーターをTrueに変更します
json_read.to_json("./data/test.json", orient='records', lines=True)

結果

{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/versace-black-code_us_5861fbefe4b0de3a08f600d5","headline":"former versace store clerk sues over secret 'black code' for minority shoppers","is_sarcastic":0}
{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/roseanne-revival-review_us_5ab3a497e4b054d118e04365","headline":"the 'roseanne' revival catches up to our thorny political mood, for better and worse","is_sarcastic":0}
{"article_link":"https:\/\/local.theonion.com\/mom-starting-to-fear-son-s-web-series-closest-thing-she-1819576697","headline":"mom starting to fear son's web series closest thing she will have to grandchild","is_sarcastic":1}
{"article_link":"https:\/\/politics.theonion.com\/boehner-just-wants-wife-to-listen-not-come-up-with-alt-1819574302","headline":"boehner just wants wife to listen, not come up with alternative debt-reduction ideas","is_sarcastic":1}
{"article_link":"https:\/\/www.huffingtonpost.com\/entry\/jk-rowling-wishes-snape-happy-birthday_us_569117c4e4b0cad15e64fdcb","headline":"j.k. rowling wishes snape happy birthday in the most magical way","is_sarcastic":0}...

4まとめ

  • パンダCSV、HDF5、およびJSONファイルの読み取り
    • Object.read _ **()
    • Object.to _ **()

おすすめ

転載: blog.csdn.net/weixin_44799217/article/details/113954597