パンダファイルの読み取りと保存
ほとんどのデータはファイルに存在するため、パンダは複雑な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':値の配列のみ
- 値直接出力値
- 'split':dict like {index-> [index]、columns-> [columns]、data-> [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 _ **()