【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】

スポンサーリンク
Python

以前動いていたopenpyxlでの出力コードが動かなくなっていたので、その修正の紹介、ならびに備忘録となります。この記事を読むことでPythonで利用するdataframeなどをエクセル(Excel)ファイルやCSVファイルに出力できるようになります。

目標・この記事を書いたわけ

Pythonのdataframeなどをエクセル(Excel)ファイルやCSVファイルに出力します。
以前のopenpyxl=3.0.3では動いていたコードがopenpyxl=3.0.10では

といったZip fileのエラーで動かなくなっていたので、動くようにすることが目的です。

使用するツール

使用するツールはGoogle Colaboratoryのpythonを使いますので、無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。

実際のコードとやっていること

こんかいはダミーデータを作って、そのdataframeデータをエクセル(Excel)ファイルやCSVファイルに出力するものとします。

ダミーデータ作成についてはこちらの記事の前半を利用します。

約8500行のデータを作成することになります。以下はそのコードになります。

import pandas as pd
import numpy as np
import datetime

start_date = datetime.date(1990,1,1)
end=datetime.date.today()

date_df = pd.DataFrame(pd.date_range(start_date, end, freq='B').date, columns=['date'])

date_df["value"]=np.nan

display(date_df.head().append(date_df.tail(10)))
import random
%%time
for i in range(len(date_df)):
  date_df.loc[i,"value"]=random.randint(0,len(date_df))

display(date_df.head().append(date_df.tail(10)))

今回はここで作成したダミーデータ data_df をエクセル(Excel)ファイルやCSVファイルに出力します。

エクセル(Excel)ファイルへの出力

コードは以下のようになります。

import openpyxl
print(openpyxl.__version__)

with pd.ExcelWriter("Excelout.xlsx") as writer:
    date_df.to_excel(writer)  

上記コードを実行させるとopenpyxl のバージョンが3.0.10であることが分かりますし、Excelout.xlsxというファイルに先ほどのdata_dfというデータテーブルが出力されることになります。

ディレクトリ構造の確認(赤矢印)とファイルの確認(青矢印)を見ていただくと新規にファイルが作成されていることが分かります。

ダブルクリックしてそのファイルを自身のPC上にダウンロードし、エクセルで開くと以下のようなファイルが取得できることが分かります。

エクセル(Excel)ファイルから入力

コードは以下の通りです。

input_file_name = './Excelout.xlsx'
input_book = pd.ExcelFile(input_file_name) 
input_sheet_name = input_book.sheet_names
input_sheet_df = input_book.parse(input_sheet_name[0]).dropna()
display(input_sheet_df)

CSVファイルへの出力

print(pd.__version__)

filename="./CSVout.csv"
date_df.to_csv(filename, encoding="utf-8-sig", header=True)

CSVファイルが作成されていることが分かると思います。ダブルクリックで右のエリアに内容を表示させることもできます。

ファイルを選んで右クリックでダウンロードすることもできます。

また、ファイルが表示されないときなど、何もないところで右クリックすることでディレクトリ内の情報を最新の物に更新(Refresh)することもできます。

CSVファイルからの入力

コードは以下の通りです。

df_csv_input = pd.read_csv("./CSVout.csv")
display(df_csv_input)

この記事が皆さんのお役に立てば幸いです。

Pythonに関する記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
米国債のゼロクーポン債STRIPSについてのメモ
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
自動化・効率化できます!金融向けGoogle スプレッドシートのすぐ使える簡単な使い方4選!(Google Finance,セントルイス連銀,アメリカ合衆国財務省,スクレイピング)【コピペで動く!】
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
ボラティリティ クラスタリング(Volatility Clustering)について:Google ColabのPythonでの相場環境分析
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】

コメント