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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

Q&A

1回答

372閲覧

Pythonのpandasメソッド(読み込み、書き出し)について

Giovannaaa

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

1グッド

0クリップ

投稿2024/11/03 02:41

前提

Pythonのpandasについての質問です。

to_csv()で出力したファイルをread_csv()で読み込む際データが変更されることはありますでしょうか。同じファイルです。
以前まではこのような事象は起きなかったのですが、下記のような事象が突然起きました。
一部のデータが日付部分のみの読み込みになってしまいます。
pandasのバージョンは2.1.3です。
よろしくお願いいたします。

該当のソースコード

python

1 2データの一部です。 3to_csv()4DATE 52024-11-01 00:00:00 62024-11-01 00:00:00 72024-11-01 00:00:00 82024-11-01 00:00:00 92024-11-01 00:00:00 10 11read_csv()12DATE 132024-11-01 00:00:00 142024-11-01 00:00:00 152024-11-01 00:00:00 162024-11-01 172024-11-01 18
tatsu99👍を押しています

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

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

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

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

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

meg_

2024/11/03 05:04

・書き込み時も読み込み時も型の指定はしていないということでしょうか? ・作成したcsvファイルをエディタで開くとどのように表示されますか? ・そのデータフレームの該当データはどのように作成されましたか?
Giovannaaa

2024/11/03 05:40

はい。型の指定はしておりません。 read_csv()は後、to_csv()は前に「df[“DATE”] = pd.to_datetime(df[“DATE”],format= "%Y-%m-%d %H:%M:%S”」の処理コードがあります。そのため、今回read_csv()後の上記処理コードにてエラーが発生しております。
hiroki-o

2024/11/03 06:32

Windows 11、Python 3.13.0、pandas 2.2.3で再現しますね。さて...
meg_

2024/11/03 06:47

ひとまずdate_formatのオプション指定で回避できないでしょうか?
hiroki-o

2024/11/03 06:58

date_formatで上手くいきますね。では、meg_さん、回答作成を。
meg_

2024/11/03 07:07 編集

Colaboratory(pandas2.2.2)で軽く試したところではオプション指定なしでも問題なさそうです。ということはpandas最新バージョンでの問題でしょうか?でも質問者さんは「pandasのバージョンは2.1.3です。」と言っているので違いそうですね・・ 「2024-11-01 00:00:00」は特殊な日付形式でもないと思うのでpandasの推定機能で上手くいくと思うんですけど。 > 以前まではこのような事象は起きなかったのですが、下記のような事象が突然起きました。 上記ということは何かしらの”変化点”がPythonの実行環境上で起きたはずです。心当たりはありませんか? > to_csv()で出力したファイルをread_csv()で読み込む際データが変更されることはありますでしょうか。 「to_csv()で出力したファイル」を何も操作しないまま「read_csv()で読み込む」という意味で良いでしょうか?出力後に他のアプリケーション(エクセルなど)で操作(上書き保存含む)はしていませんよね?
hiroki-o

2024/11/03 07:09

Giovannaaaさん OSとPythonバージョンは何ですか?
Giovannaaa

2024/11/03 07:28

>上記ということは何かしらの”変化点”がPythonの実行環境上で起きたはずです。心当たりはありませんか? すみません。心当たりはありません。 > 「to_csv()で出力したファイル」を何も操作しないまま「read_csv()で読み込む」という意味で良いでしょうか?出力後に他のアプリケーション(エクセルなど)で操作(上書き保存含む)はしていませんよね? はい、合っております。操作は何もしておりません。 > OSとPythonバージョンは何ですか? OSはLinuxでPythonバージョンは3.11です。 OSのバージョンは現在確認することができません。申し訳ございません。
hiroki-o

2024/11/03 07:46

Ubuntu 24.04.1 LTS、Python 3.12.3、pandas 2.2.3で再現することを確認しました。 ここで私は撤退。あとは、Python有識者の回答を待つ!
meg_

2024/11/03 08:03

下記コードで再現しますか? *********************************************************** import pandas as pd import io data = ''' 2024-11-01 00:00:00 2024-11-01 00:00:00 2024-11-01 00:00:00 2024-11-01 00:00:00 2024-11-01 00:00:00 ''' df = pd.read_csv(io.StringIO(data)) df.head(5) ***********************************************************
meg_

2024/11/03 08:09

> >上記ということは何かしらの”変化点”がPythonの実行環境上で起きたはずです。心当たりはありませんか? > すみません。心当たりはありません。 そうですか。ユーザー側の変化点が何一つ無いのにPandasの動作が変わってしまうなんて困ってしまいますね。Issueとして上げてはどうでしょうか?もしかしたらPythonやPandasの潜在的なバグなのかもしれませんね。今までがたまたま上手くいっていたのかもしれませんね。同じ環境・同じデータを用意できないため何か他の原因があるのかもしれませんが分かりません。
melian

2024/11/03 08:24

手元の環境は Python 3.12.3/Pandas 2.2.3 で試してみました。00:00:00 の場合、表示上は省略されますが、データ型は datetime64[ns] です。ですが、例えば '2024-11-01 00:00:01' が含まれていると表示は "2024-11-01 00:00:00" や "2024-11-01 00:00:01" になります。 df = pd.DataFrame({  'DATE': [   '2024-11-01 00:00:00', '2024-11-01 00:00:00', '2024-11-01 00:00:00',   '2024-11-01 00:00:00', '2024-11-01 00:00:00',  ] }) df['DATE'] = pd.to_datetime(df['DATE'], format='%Y-%m-%d %H:%M:%S') print(df) df.info() # =>  DATE 0 2024-11-01 1 2024-11-01 2 2024-11-01 3 2024-11-01 4 2024-11-01 <class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 1 columns):  # Column Non-Null Count Dtype --- ------ -------------- -----  0 DATE 5 non-null datetime64[ns] dtypes: datetime64[ns](1)
Giovannaaa

2024/11/03 09:30

meg_さん、hiroki-oさん 検討していただきありがとうございました。Pythonやpandasの潜在的なバグの可能性がありますね。。引き続き検証してみます。 melianさん 同じ事象になったということでしょうか?
melian

2024/11/03 09:56

> 同じ事象になったということでしょうか? 中身は同じ(datetime64 型で値は "2024-11-01 00:00:00")、ということです。(バグではありません) print(df['DATE']) datetime1 = pd.to_datetime('2024-11-01 00:00:00', format='%Y-%m-%d %H:%M:%S') print(datetime1) print(df['DATE'][0] == datetime1) => 0 2024-11-01 1 2024-11-01 2 2024-11-01 3 2024-11-01 4 2024-11-01 Name: DATE, dtype: datetime64[ns] 2024-11-01 00:00:00 True
Giovannaaa

2024/11/03 11:40

> 中身は同じ(datetime64 型で値は "2024-11-01 00:00:00")、ということです。(バグではありません) 承知いたしました。検証していただきありがとうございます。
meg_

2024/11/03 15:25

> ・作成したcsvファイルをエディタで開くとどのように表示されますか? 上記についてはいかがでしょうか?
Giovannaaa

2024/11/04 05:50

> ・作成したcsvファイルをエディタで開くとどのように表示されますか? 上記と同じでデータの横に;が付きます。 2024-11-01 00:00:00; 2024-11-01;
meg_

2024/11/04 10:49

> 上記と同じでデータの横に;が付きます。 「上記と同じ」とはどういう意味でしょうか?該当のソースコードにも今までの話の中にも「データの横に;が付きます」とういうのは出てきてました?
Giovannaaa

2024/11/04 11:39

分かりづらくてすみません。csvファイルをエディタ(自分はサクラエディタ)で開くとデータの区切りとして;が付きます。そして、上記のようにデータは書き込み読み込み時のファイルをエディタで開いて確認すると変更されております。
guest

回答1

0

Pythonのpandasについての質問ですが、to_csv()で出力したファイルをread_csv()で読み込む際にデータが変更されることはありますか?最近、一部のデータが日付部分のみの読み込みになってしまいました。もしこの問題を解決するためのAPIがあれば、とても助かります。便利なAPI、例えば、EchoAPIを使うと、こういった問題の対処が簡単になるかもしれませんね。

投稿2024/11/04 11:54

isai

総合スコア148

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問