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

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

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

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

Python 3.x

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

pandas

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

Q&A

2回答

950閲覧

DataFrameを代入予定の空の変数。この変数を用意するとき、どうすれば、、、。

Masarina

総合スコア1

CSV

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

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2021/11/29 02:05

本題を理解するための前置き(少しややこしいので)

csvをpd.read_csvでinportする際に、
最初に変数を用意してから
その変数にあとからcsvを代入する場面に遭遇したとします。

「えっその場合用意するからの変数には何を代入すればいいのかな,,,?」
なんて気になりまして。
下のようなことを色々やってみたのですが笑

df = None
df = 0
df = np.NAN
,
,
,
,
っと、各この後に、
df = pd.read_csv("test.csv")

っと代入しようとしているのです。
っと、色々試しましたが、まぁエラーですよね笑

本題

ということでですね、
作成した変数に後にDataFrame型を代入したい場合、
その最初に作成する"空"の変数は、なにを代入しておけば良いのでしょうか。

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

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

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

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

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

melian

2021/11/29 02:16

ええと、、 df = None df = 0 df = np.NAN 全ての場合で後から df = pd.read_csv("test.csv") としてもエラーにはなりませんが、、、 test.csv になにか問題があるのではないでしょうか。
bsdfan

2021/11/29 07:24

型チェックのエラーですか?
meg_

2021/11/29 11:40 編集

> 最初に変数を用意してから 必要ないと思いますがどのような意図でしょうか?
guest

回答2

0

言語仕様的にはコメントや他の人の回答はごもっともでその通りだと思うんですけど,
あらかじめdfpd.read_csv()の返り値と同じ型を設定しておくのは
エラーチェックをする上でも普通の考え方だと個人的には思います。

pythonの言語仕様としては

python

1import pandas as pd 2 3try: 4 df = pd.read_csv("test.csv") 5except Exception as e: 6 print(e) 7 8print(df)

とかしても df = pd.read_csv("test.csv") で例外が発生しなければ
正常動作で通ってしまう,へんちくりんな感じになっています。
まぁ例外処理の時に簡単に記述できるからという理由も分かるのですが…
(上の例では例外発生時にexcept節内でdfを初期化することが可能という利点あり)

ここで

python

1import pandas as pd 2 3df = なにか 4 5try: 6 df = pd.read_csv("test.csv") 7except Exception as e: 8 print(e) 9 10print(df)

として,この「なにか」をpd.read_csv("test.csv")の型と合わせたいところです。
pythonをインタライティブに実行して(元が古い環境なのでpython3で失礼します)
read_csvのhelpを見ます。

$ python3 Python 3.9.7 (default, Sep 10 2021, 14:59:43) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pandas as pd >>> help(pd.read_csv) Help on function read_csv in module pandas.io.parsers: ... Returns ------- DataFrame or TextParser A comma-separated values (csv) file is returned as two-dimensional data structure with labeled axes. ...

返り値はDataFrameTextParserのようです。実は私はTextParserが返ってくる
条件を知りませんが,まぁDataFrameが返ってくるんでしょう。

DataFrameのヘルプを見てみます。

>>> help(pd.DataFrame) Help on class DataFrame in module pandas.core.frame: class DataFrame(pandas.core.generic.NDFrame) | DataFrame(data=None, index: Optional[Collection] = None, columns: Optional[Collection] = None, dtype: Union[ForwardRef('ExtensionDtype'), str, numpy.dtype, Type[Union[str, float, int, complex, bool]], NoneType] = None, copy: bool = False) ...

クラスのようなので,まぁ引数なしのコンストラクタでもやっとけばサイズ0の
データフレームになりそうです。
確認してみます。

>>> df = pd.DataFrame() >>> df Empty DataFrame Columns: [] Index: [] >>>

列も行の空のデータフレームっぽいです。

よって次のような流れでプログラムを書くことができるでしょう。

python

1import pandas as pd 2 3df = pd.DataFrame() 4 5try: 6 df = pd.read_csv("test.csv") 7except Exception as e: 8 print(e) 9 10# ここでdfに対してエラーチェックの処理 11

投稿2021/11/30 12:56

ujimushi_sradjp

総合スコア2152

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

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

0

プログラミング言語の変数の意味づけは、プログラミング言語ごとに違います。

変数に型があるC/C++やJavaのような言語に対して、Pythonの変数には型はありません。
なぜならばPythonの変数とはオブジェクトに束縛(bind)された名前だからです。

詳しくは公式ドキュメント 4.2. 名前づけと束縛 (naming and binding)をごらんください。

このため、「用意する変数」は不要ですし、用意する場合でも何が入っていても問題ありません。

投稿2021/11/30 04:42

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問