質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1313閲覧

pandas excel_readで急にファイルの読み込みができなくなった

onosan

総合スコア62

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2023/08/31 00:54

編集2023/08/31 05:34

コメントいただいているのに、ご連絡おくれてすみません。毎日、PythonでエクセルのファイルをPythonのpandasで読み込んでいるのですが、今日、急に、pd.read_excelでエクセルを読み込んだところ、データフレームとして読み込んでくれなくなりました。
print(df1)とすると、
Empty Dataframe と出てきます。

コードは以下の感じです。

python

1import pandas as pd 2import numpy as np 3f1 = r"C:\Users\akira.onozuka\Downloads\変更管理_総務本部ver2.0.xlsx" 4#f1 = r"C:\Users\akira.onozuka\Downloads\Book1.xlsx" 5 6f2 = r"C:\Users\akira.onozuka\Downloads\変更管理_経理調達本部ver2.0.xlsx" 7f3 = r"C:\Users\akira.onozuka\Downloads\変更管理_教育研修本部ver2.0.xlsx" 8f4 = r"C:\Users\akira.onozuka\Downloads\変更管理_人事本部ver2.0.xlsx" 9f5 = r"C:\Users\akira.onozuka\Downloads\変更管理_マーケティング本部ver2.0.xlsx" 10f6 = r"C:\Users\akira.onozuka\Downloads\変更管理_ファーマコビジランス本部ver2.0.xlsx" 11f7 = r"C:\Users\akira.onozuka\OneDrive - Accenture\Desktop\台帳\変更管理まとめ.xlsx" 12 13df1 = pd.read_excel(f1,header=[1,2,3]) 14df1.columns = ["_".join(cols) for cols in df1.columns] 15print(df1.columns)

これをおこなうと
Empty Dataframe

と出てきます。df1~df7は同じ構造をもったエクセルで、
例えば、df2.columnsとやると、

##ここから
Index(['Unnamed: 0_level_0_Unnamed: 0_level_1_No',
'台帳記載日付_Unnamed: 1_level_1_起票日\n(記載不要)',
'台帳記載日付_Unnamed: 2_level_1_最終更新日', '台帳記載日付_Unnamed: 3_level_1_変更タイプ',
'依頼元_Unnamed: 4_level_1_依頼元\n会社名', '依頼元_Unnamed: 5_level_1_本部名',
'依頼元_Unnamed: 6_level_1_事業部名', '依頼元_Unnamed: 7_level_1_グループ名',
'依頼元_Unnamed: 8_level_1_依頼者名', '依頼元_Unnamed: 9_level_1_業務仕様書\n管理No',
'依頼受付_Unnamed: 10_level_1_依頼受付\n本部名', '依頼受付_Unnamed: 11_level_1_事業部名',
'依頼受付_Unnamed: 12_level_1_グループ名', '依頼受付_Unnamed: 13_level_1_申請者',
'依頼受付_Unnamed: 14_level_1_申請日', '依頼受付_Unnamed: 15_level_1_変更番号',
'依頼受付_Unnamed: 16_level_1_変更概要', '依頼受付_Unnamed: 17_level_1_変更理由',
'変更内容_Unnamed: 18_level_1_変更前', '変更内容_Unnamed: 19_level_1_変更後',
'実施時期_予定_開始日', '実施時期_予定_終了日', '実施時期_実績_開始日', '実施時期_実績_終了日',
'業務量(FTE)変更_Unnamed: 24_level_1_有無', '業務量(FTE)変更_予定_予定工数(h)',
'業務量(FTE)変更_予定_工数詳細', '業務量(FTE)変更_実績_年間合計\n実績工数(h)', '業務量(FTE)変更_実績_7月',
'業務量(FTE)変更_実績_8月', '業務量(FTE)変更_実績_9月', '業務量(FTE)変更_実績_10月',
'業務量(FTE)変更_実績_11月', '業務量(FTE)変更_実績_12月', '業務量(FTE)変更_実績_1月',
'業務量(FTE)変更_実績_2月', '業務量(FTE)変更_実績_3月', '業務量(FTE)変更_実績_4月',
'業務量(FTE)変更_実績_5月', '業務量(FTE)変更_実績_6月',
'業務マニュアル変更_Unnamed: 40_level_1_有無', '業務マニュアル変更_Unnamed: 41_level_1_文書名',
'業務マニュアル変更_Unnamed: 42_level_1_ページ',
'業務マニュアル変更_Unnamed: 43_level_1_修正担当者',
'業務運営管理部エスカレフラグ_Unnamed: 44_level_1_フラグ',
'業務運営管理部エスカレフラグ_Unnamed: 45_level_1_概要',
'ステータス_Unnamed: 46_level_1_ステータス\n内容', 'ステータス_Unnamed: 47_level_1_更新日',
'ステータス_Unnamed: 48_level_1_備考', 'e_e_e'],
dtype='object')
##ここまで
と出てきます。昨日まで、df1は読み込めたのですが、元のエクセルをみても、特に問題がなさそうです。ちなみに、エクセルの内容を別の新しいエクセルにコピペして新しいファイルにしたら、読み込むことができました。
エラーメッセージも特になく、何が原因かわかりません。
原因として、何が考えられるでしょうか。
なお、おなじようなフォーマットのエクセルをいくつも読んで、縦結合するプログラムなのですが、その他のエクセルでは、同様の事象が起きておらず、その1点のエクセルのみが、何か、おかしなことになっていると思われるのですが、一見しても、今までと変わらず、原因が特定できません。
お知恵を拝借できれば幸いです。
何卒、よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/08/31 01:38

「pd.read_excelでエクセルを読み込ん」だだけでは「Index([],dtype='object’)」が「出る」ことはありませんし、たぶん、その「Index(...」というのは読み込んだデータフレームのインデックスを表示したものです。 また、何もしないのにできなくなるということはありません。 コードか環境かExcelファイルが変っていると思われます。 ということで、これでは何もわからないので、コード全体もしくは該当部分の抜粋と、コードやファイルなどどのような変更をしたのかについて、追記ください。 回答はここではなく、質問を編集してください。
jbpb0

2023/08/31 03:54 編集

質問者さん > その他のエクセルでは、同様の事象が起きておらず、その1点のエクセルのみが、何か、おかしなことになっている エクセルのファイルによって現象が起きたり起きなかったりするのなら、エクセルのファイルに依存する内容なので、pythonのコードだけじゃなくて、エクセルのファイルの内容も開示してくれないと、分からないと思います
TakaiY

2023/08/31 04:29

もう一度書きますね。 何もしないのにできなくなるということはありません。コードか環境かExcelファイルが変っていると思われます。 全体もしくは該当部分の抜粋と、コードや(エクセル)ファイルなどどのような変更をしたのかについて、追記ください。
TakaiY

2023/08/31 06:23

追記いただいた内容からすると、Excelファイルに問題があるということは確定でしょう。 新しいブックにコピペしたら読めたとのことですから、問題は回避できたということでこれで解決ではないでしょうか? さらにそのExcelの何が問題なのかを究明したいということであれば、そのExcelブックそのものを調査する必要がありますね。
onosan

2023/08/31 06:32

おっしゃる通りかと思います。ただ、問題のエクセル自身はふつうに使えており、このような事象があるのかググってもわからず。エクセルそのものはふつうに使えているので、そんなことが本当にあるのかという感覚です。Pythonでは読めないという現象があるならもっと世の中にでていてもおかしくないような気がしております。すみません。
TakaiY

2023/08/31 06:44

昨日までの読み込めていたExcelファイルと今日の読み込めないExcelファイルには違いがあり、その間に行なった操作が原因ですので、そのあたりを探るといいと思いますよ。
can110

2023/08/31 07:22

その問題のファイルに含まれているシート名を先頭(左端)から順に質問本文に追記・記載ください。
bsdfan

2023/09/02 04:45

https://stackoverflow.com/a/52669109/7402018 によると、Strict Open XML Spreadsheet な xlsx だとデータが読めないみたいです。そのあたりを確認してみてはどうでしょう。 その日に、そのファイルを編集した人に何か変なこと(いつもと違うこと)をやっていないか確認するとかですかね。
can110

2023/09/05 07:09

気になったのでStrict Open XML Spreadsheet(.xlsx)で試してみましたが ValueError: Worksheet index 0 is invalid, 0 worksheets found が発生したので、本現象は別原因のような気がします。
guest

回答1

0

ベストアンサー

原因として、何が考えられるでしょうか。

コード詳細は確認してませんが、ひとつの可能性としての回答です。
提示コードのようにread_excelsheet_nameを指定していないと、先頭のシートを読み込みます。
よってたとえば、そのファイルの先頭(左端)にあやまって空のシートが入っていたりすると、そのような結果になります。
FS-05
このような場合や意図したシートが存在しなかった場合も考慮して、シート名は指定すべきと思います。
参考:防御的プログラミング(CodeCompleteのまとめ)

投稿2023/09/07 05:32

編集2023/09/07 13:01
can110

総合スコア38352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onosan

2023/09/07 12:40

ありがとうございます。いろいろとコメントしていただいた皆様にも感謝したいです。実は、いろいろと触っているうちに読めないファイルが自動保存で上書きされて、原因の特定が困難になってしまいました。しかし、ワークシート名を指定していなかったのは明らかに自分のミスであり、ベストアンサーにさせていただきます。皆さま、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問