Python_pandas: CSV ファイルを読み取り、指定された列とセルを検索し、NaN 問題を解決します。

 

目次

csv ライブラリが推奨されないのはなぜですか?

CSV ファイルの読み取りにパンダが推奨されるのはなぜですか?

csv ファイルを操作するパンダの旅を始めましょう。

0.csvファイルのプレビュー

1.csvファイルを読み込む

2. 指定された列と指定されたセルを検索します。

2.1 列の指定: インデックスを使用して、hour という名前の列を指定します。

2.2 指定セル:1001Aの23列目のAQI値

3. 遭遇した「NAN」を解決する


csv ライブラリが推奨されないのはなぜですか?

この段落では、csv ライブラリの使用に関する一般的な問題について説明します。

  1. csv.DictWriter(): この関数によって返された結果を一度走査した後、再度走査して返された結果は空のリストです。
  2. csv.reader(): 返される結果は構造体であり、これを呼び出すには for ループが必要であり、リストのように特定のセルを直接選択することはできません。
  3. 指定した列を列名から探す操作は面倒です。
    #选择特定的单元格
    
    reader = csv.reader(filenanme)
    for row in reader:
        print(row[0])

上記の問題を解決する方法:

  1. 各ループの走査後、 csv.DictWriter() 関数を再使用してファイルを読み取ります。
  2. 上手に使い続けてください。
  3. 振り返ってパンダを抱きしめます。

 

CSV ファイルの読み取りにパンダが推奨されるのはなぜですか?

  1. 特に csv ファイルの読み取りをサポートする pd.read_csv() 関数があると便利です。
  2. CSVを2次元リスト形式に変換
  3. 列名による特定の列の検索のサポート。
  4. csv ライブラリと比較すると、少ない労力でより多くのことを実行できます。

 

csv ファイルを操作するパンダの旅を始めましょう。

0.csvファイルのプレビュー

1.csvファイルを読み込む

import pandas as pd

file="E:\data\test.csv"
csvPD=pd.read_csv(file)

2. 指定された列と指定されたセルを検索します。

2.1 列の指定: インデックスを使用して、hour という名前の列を指定します。

インデックスで列を検索する方法: csvPD['hour']

時間列で時刻が 23 の行を検索します。
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23":
        print(csvPD['hour'][私])


2.2 指定セル:1001Aの23列目のAQI値

keyWord="1001A"
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== " AQI":
        result=csvPD[keyWord][i]
        print(結果)
        

import pandas as pd

#读取cvs文件
file="E:\data\test.csv"
csvPD=pd.read_csv(file)

#指定列名为hour的列
csvPD['hour']


#在hour列中找到时间为23的行
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23":
        print(csvPD['hour'][i])


#在hour列中找到时间为23时1001A站点的AQI值
keyWord="1001A"
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== "AQI":
        result=csvPD[keyWord][i]
        print(result)
        

3. 遭遇した「NAN」を解決する

CSV ファイル内: 1002A のステーション 0 の AQI は空白の値で、返される結果は NAN です。

NAN フルネーム: 数字ではありません

一般的な解決策:

  1. numpy 関数を使用して判断します: np.isnan() およびxxx は np.nan
  2. 算術演算による判断: 任意の数に 0 を掛けたものは 0
  3. ファイルを読み取るときにパラメータを追加します: pd.read_csv(file, keep_default_na=False)

操作結果は次のようになります。

1. np.isnan() の使用を推奨します。 csvPD["1002A"][0] の場合、np.nan は False と表示されます。

2. nan*0 を使用し、0 の代わりに nan を使用することをお勧めします。

3. パラメータを追加すると、すべての出力データ型は str、nan は null、len(result)=0 になります。

コード:

使用機能:

import numpy as np

result=csvPD["1002A"][0]

if np.isnan(result):
    print("该数据为%f,不能参与计算",result)
else:
    print(result)

操作方法を使用します。

result=csvPD["1002A"][0]

if result*0 == 0 :
    print(result)
else:
    print("该数据为%f,不能参与计算",result)



#若数据大于0
result=csvPD["1002A"][0]

if result > 0 :
    print(result)
else:
    print("该数据为%f,不能参与计算",result)

 

おすすめ

転載: blog.csdn.net/admiz/article/details/107065640