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

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

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

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

pandas

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

Q&A

解決済

2回答

379閲覧

pythonにおけるデータ加工方法について

rarara

総合スコア20

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

pandas

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

0グッド

1クリップ

投稿2022/07/15 01:03

前提

データフレームの中のすべてのカラムに対して、
空文字やnull値をチェックする関数を作りたいと考えております。

実現したいこと

  • データフレームを入力とする
  • 全てのカラムに対して、空文字の数、null値の数、データ型を出力する
  • 計算した結果を表形式で出力する

現状のコード

そこで現状このようなコードを書いております。

def check_null_empty_string(df): dfx = pd.DataFrame() for column in df.columns: dfx[column] = (df[column] == '').sum() dfx[column] = (df[column] == '').sum() dfx[column] = (df[column] == "").sum() dfx[column] = df[column].isnull().sum()

現状の問題点と悩み

しかし上記のコードを実行すると、

TypeError: an integer is required (got type str)

「文字型に適応していない」というエラーがでてしまいます。

となると、データ型に合わせて条件分岐をした上で、
上記の様な処理を記述していくのが一般的なのでしょうか。

ただそうなると、str型、int型、float型などなど様々なデータ型が存在するため、どこまで条件分岐を記述する必要が出てくるのか、そもそも.sum()と記述する文が同じ形が続いてるため、for文に書き直したほうが良いのか、しかしそうなると、二重for文になってしまい、良くない形ではないのか。。。

など一人では考えが堂々巡りしてしまい、立ち行かなくなってしまったので、
ご質問させていただきました。何かヒントになる考え方、コード例など何でも結構ですのでご回答いただけますと嬉しいです。
何卒よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

python 3.8

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

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

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

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

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

guest

回答2

0

ベストアンサー

python

1import pandas as pd 2import numpy as np 3from datetime import datetime 4 5def check_null_empty_string(df): 6 return pd.concat([ 7 (df == '').sum(), df.isnull().sum(), df.dtypes, 8 ], axis=1).set_axis(['empty string', 'null', 'dtype'], axis=1) 9 10if __name__ == '__main__': 11 df = pd.DataFrame({ 12 'A': [1, 2, 3, 4, 5], 13 'B': ['x', '', 'y', '', 'z'], 14 'C': [6.2, 7.3, np.nan, 8.9, 9.5], 15 'D': pd.to_datetime([ 16 '2022-01-01', '2022-02-10', '2022-03-20', '', '2022-07-15', 17 ]), 18 }) 19 20 dfx = check_null_empty_string(df) 21 print(dfx) 22 23# 24 empty string null dtype 25A 0 0 int64 26B 2 0 object 27C 0 1 float64 28D 0 1 datetime64[ns]

投稿2022/07/15 04:18

melian

総合スコア19749

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

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

0

以下のコードで列毎のNaNの数がわかります。

python

1df_null = df.isnull().sum()

以下のコードで、列毎の空白の数がわかります。

python

1df_tmp = df == "" 2df_brank = df_tmp.sum() 3 4#こう書いてえもよい 5df_brank = (df == "").sum()

投稿2022/07/15 03:06

TakaiY

総合スコア12763

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問