お世話になります。Pythonのプログラムで質問です。
Kaggleのタイタニックのデータで、下記を実行するとエラーになったりならなかったりします。
import pandas as pd
df = pd.read_csv('data/train.csv')
vc = df.dtypes.value_counts()
print(vc)
print(type(vc))
print(vc['int64'])#エラーの場合はここで発生
エラーが発生する場合、エラーメッセージは、
KeyError: 'int64'
エラーが発生しない場合、下記の様に出力されます。
int64 5
object 5
float64 2
dtype: int64
<class 'pandas.core.series.Series'>
5
実行ボタンを押すタイミングでエラーになったりならなかったりする理由をご存知の方がいらっしゃいましたらご教示願います。
何卒よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
vcのインデックスが、文字列ではないからと思われます。
print で int64 と表示されていますが、'int64' ではなくて、numpy.dtype('int64') になっているはずです。
print(type(vc.index[0])) してみたらわかるでしょう。
単純な解決策としてはインデックスを文字列に変換してしまうのが簡単だと思います。
python
1import pandas as pd 2 3df = pd.read_csv('data/train.csv') 4vc = df.dtypes.value_counts() 5vc.index = vc.index.astype('str') # これを追加 6print(vc) 7print(type(vc)) 8print(vc['int64'])
エラーが起きたり、起きなかったりというのは原因はよくわからないですね。
numpy.dtype('int64') == 'int64'
(dtypeと文字列の比較)はTrueなので、
エラーは発生しないような気もしますが、pandasの中の実装によるんじゃないでしょうか。
投稿2021/12/09 02:40
総合スコア4794
0
エラーの前のprint
はどのようになっていますでしょうか。
エラーにならなかったりするのはわからないですが、pd.read_csv
でdtype
を指定したらいかがでしょうか。
dtypeType name or dict of column -> type, optional
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} Use str or object together with suitable na_values settings to preserve and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion.
コメントありがとうございます。
追記です。
エラーが発生する場合もprint
は同じなのですね。
実行ボタンを押すタイミングでエラーになったりならなかったりする理由をご存知の方がいらっしゃいましたらご教示願います。
.
low_memory : bool, default True
(機械翻訳)
内部的にファイルをチャンク単位で処理するため、解析時のメモリ使用量は少なくなりますが、型の推論が混在する可能性があります。型が混在しないようにするには、False を設定するか、dtype パラメータで型を指定します。chunksize または iterator パラメータを使用して、データをチャンクで返すことができます。(Cパーサーでのみ有効)。
負荷が大丈夫かどうかという問題はありそうですが、
low_memory=False
にしたら毎回同じ状況にはなりますでしょうか。
投稿2021/12/08 08:39
編集2021/12/09 02:24退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 03:04
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 03:14