Python でのデータのトークン化エラー C エラー

Zeeshan Afridi 2023年6月21日
  1. ParserError: データのトークン化エラー。 C エラー Python で
  2. ParserError: データのトークン化エラーを修正する方法。 C エラー Python で
  3. 行をスキップして ParserError: データのトークン化エラー。 Cエラー
  4. ParserError: Error tokenizing data. 正しい区切り記号を使用して修正する Cエラー
  5. dropna() を使用して ParserError: Error tokenizing data. を修正する Cエラー
  6. fillna() 関数を使用して NaN 値を埋める
Python でのデータのトークン化エラー C エラー

何らかの目的でデータを操作する場合は、データをクリーンアップすることが必須です。つまり、null 値を埋め、無効なエントリを削除してデータをクリーンアップすることで、結果に影響を与えず、プログラムがスムーズに実行されます。

さらに、ParserError: Error tokenizing data. Cエラーは、混合データ、異なる数の列、または単一のファイルとして保存された複数のデータファイルなど、ファイルに間違ったデータを提供する可能性があります.

また、CSV ファイルを read_csv として読み取り、別の区切り記号と行末記号を指定した場合にも、このエラーが発生する可能性があります。

ParserError: データのトークン化エラー。 C エラー Python で

説明したように、ParserError: データのトークン化エラー。 C エラー は、Python プログラムが CSV データを解析したときに、無効な値、null 値、未入力の列などのエラーが発生した場合に発生します。

data.csv ファイルにこのデータがあり、それを使用して pandas を使用して読み取りを行っているとしますが、エラーがあります。

Name,Roll,Course,Marks,CGPA
Ali,1,SE,87,3
John,2,CS,78,
Maria,3,DS,13,,

コード例:

import pandas as pd

pd.read_csv("data.csv")

出力:

ParserError: Error tokenizing data. C error: Expected 5 fields in line 4, saw 6

ご覧のとおり、上記のコードは ParserError: Error tokenizing data. data.csv ファイルからのデータの読み取り中に C エラー が発生しました。これは、コンパイラが 4 行で 5 フィールドを期待していたが、代わりに 6 を取得したことを示しています。

エラー自体は一目瞭然です。 エラーの正確なポイントを示し、エラーの理由も示しているため、修正できます。

ParserError: データのトークン化エラーを修正する方法。 C エラー Python で

ここまでで、ParserError: Error tokenizing data. Cエラー Python; それでは、それを修正する方法を見てみましょう。

結果に影響を与えたり、プログラムの実行に失敗したりする可能性があるため、分析する前にデータをクリーンアップすることを常にお勧めします。

データ クレンジングは、無効なデータ入力、null 値、および無効なエントリを削除するのに役立ちます。 基本的に、これはデータ分析の前処理段階です。

Python には、データをクリーンアップしてエラーを回避するのに役立つさまざまな関数とパラメーターがあります。

行をスキップして ParserError: データのトークン化エラー。 Cエラー

これは、行をスキップしてエラーを引き起こす最も一般的な手法の 1つです。 上記のデータからわかるように、最後の行がエラーの原因でした。

引数 on_bad_lines = 'skip' を使用すると、バグのある行は無視され、残りはデータ フレーム df に格納されます。

import pandas as pd

df = pd.read_csv("data.csv", on_bad_lines="skip")
df

出力:

	Name	Roll	Course	Marks	CGPA
0	Ali		1		SE		87		3.0
1	John	2		CS		78		NaN

上記のコードは、エラーの原因となっているすべての行をスキップし、他の行を出力します。 出力でわかるように、最後の行はエラーの原因だったためにスキップされています。

しかし、修正が必要な NaN 値を取得しています。 そうしないと、統計分析の結果に影響します。

ParserError: Error tokenizing data. 正しい区切り記号を使用して修正する Cエラー

無効なセパレーターを使用すると、ParserError が発生する可能性もあるため、提供するデータに応じて、正しく適切なセパレーターを使用することが重要です。

tab を使用して CSV データまたはスペースを区切ることがあるため、プログラムでもその区切り記号を指定することが重要です。

import pandas as pd

pd.read_csv("data.csv", sep=",", on_bad_lines="skip", lineterminator="\n")

出力:

	Name	Roll	Course	Marks	CGPA\r
0	Ali		1		SE		87		3\r
1	John	2		CS		78		\r

区切り文字は , です。これが、sep=','lineterminator ='\n' について言及した理由です。行が \n で終わるからです。

dropna() を使用して ParserError: Error tokenizing data. を修正する Cエラー

dropna 関数は、Null または NaN 値を含むすべての行を削除するために使用されます。

import pandas as pd

df = pd.read_csv("data.csv", on_bad_lines="skip")
print("      **** Before dropna ****")
print(df)

print("\n      **** After dropna ****")
print(df.dropna())

出力:

      **** Before dropna ****
   Name  Roll Course  Marks  CGPA
0   Ali     1     SE     87   3.0
1  John     2     CS     78   NaN

      **** After dropna ****
  Name  Roll Course  Marks  CGPA
0  Ali     1     SE     87   3.0

2つの行しかないので、1つの行にはすべての属性がありますが、2 番目の行には NaN 値があるため、dropna() 関数は NaN 値を持つ行をスキップし、1 行だけを表示しました。

fillna() 関数を使用して NaN 値を埋める

データで NaN 値を取得すると、fillna() 関数を使用して、デフォルト値 0 を使用する他の値を置き換えることができます。

コード例:

import pandas as pd

print("      **** Before fillna ****")
df = pd.read_csv("data.csv", on_bad_lines="skip")
print(df, "\n\n")

print("      **** After fillna ****")
print(df.fillna(0))  # using 0 inplace of NaN

出力:

      **** Before fillna ****
   Name  Roll Course  Marks  CGPA
0   Ali     1     SE     87   3.0
1  John     2     CS     78   NaN


      **** After fillna ****
   Name  Roll Course  Marks  CGPA
0   Ali     1     SE     87   3.0
1  John     2     CS     78   0.0

fillna()NaN0 に置き換えたので、データを適切に分析できます。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - Python Error