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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

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

Q&A

解決済

2回答

20334閲覧

pandasでdtypeをstrに設定するとobjectになるのはなぜ?

bbdd

総合スコア43

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

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

0グッド

0クリップ

投稿2020/04/25 17:47

疑問

  • pandasでdtypeをstrに設定するとobjectになるのはなぜでしょうか?

pythonにはstrというデータ型があるのでその型で表せばいいのでは?と思ってしまったので、oなぜそうしているのか知りたいです

  • また、このobject型というのはpythonが標準でもつ型でしょうか?ググってはみたのですが、この型に関する説明をうまく見つけられず、、

補足

pandasで例えば下記のように任意のcsvをstr型として読み込むとします。
そうした場合、型の出力はobjectとなります。

df_str = pd.read_csv('data/src/sample_header_index_dtype.csv', index_col=0, dtype=str) print(df_str) # a b c d # ONE 1 001 100 x # TWO 2 020 NaN y # THREE 3 300 300 z print(df_str.dtypes) # a object # b object # c object # d object # dtype: object

参考

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

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

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

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

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

guest

回答2

0

ベストアンサー

object型というのはpythonが標準でもつ型でしょうか?

python object型ということです。
pythonの場合、文字列だけではなく、整数・浮動小数・リストなど全てがオブジェクトとなりますので、これら全てを格納することができる型ということになります。

pandasでdtypeをstrに設定するとobjectになるのはなぜでしょうか?

基本的に pandas の Seriesは numpy 配列と numpy dtype を使用しています。
numpyでは高速にデータにアクセスできるように設計されており、データを連続なメモリー領域に格納され、各データブロックに格納されるデータは同種類・同サイズのデータとなります。(このデータの種類を管理するのが dtype です。)

整数・浮動小数などの数値の場合は、(高速にアクセスする為に)Python objectは使わずに上記のデータブロックに直接データが格納されますので、このdtype をデータの種類毎に新たに定義される必要がありますが、文字列データの場合は直接データブロックにデータを格納するわけではなくポインタ管理となりますので、他のpython object と区別をする必要がなく同じ dtype(object type) が使われるということなのでしょう。
(この辺は設計思想が絡むので、設計者本人でないと正確な情報を出すことはできないと思いまが・・。)

ちなみに、numpy では直接データブロックに文字列を格納する固定長文字列があったと記憶してますが、pandas では未サポートのはずです。

投稿2020/04/26 02:49

編集2020/04/26 02:55
magichan

総合スコア15898

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

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

0

Version 1.0以降は文字列専用型があるようですね。(私は1.0以降を使ったことがありません)
但し「StringArray is currently considered experimental. The implementation and parts of the API may change without warning.」とのことですが。

Text Data Types

New in version 1.0.0.

There are two ways to store text data in pandas:
1.object -dtype NumPy array.
2.StringDtype extension type.

互換性の為、型指定なしで読み込むと文字列は「objcet型」となるようですが、個別で「string型」に変換可能とのことです。詳細は上記リンク先を参照ください。

投稿2020/04/26 03:03

meg_

総合スコア10580

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問