目次
CSV ファイルの読み取りにパンダが推奨されるのはなぜですか?
2.1 列の指定: インデックスを使用して、hour という名前の列を指定します。
csv ライブラリが推奨されないのはなぜですか?
この段落では、csv ライブラリの使用に関する一般的な問題について説明します。
- csv.DictWriter(): この関数によって返された結果を一度走査した後、再度走査して返された結果は空のリストです。
- csv.reader(): 返される結果は構造体であり、これを呼び出すには for ループが必要であり、リストのように特定のセルを直接選択することはできません。
- 指定した列を列名から探す操作は面倒です。
#选择特定的单元格 reader = csv.reader(filenanme) for row in reader: print(row[0])
上記の問題を解決する方法:
- 各ループの走査後、 csv.DictWriter() 関数を再使用してファイルを読み取ります。
- 上手に使い続けてください。
- 振り返ってパンダを抱きしめます。
CSV ファイルの読み取りにパンダが推奨されるのはなぜですか?
- 特に csv ファイルの読み取りをサポートする pd.read_csv() 関数があると便利です。
- CSVを2次元リスト形式に変換
- 列名による特定の列の検索のサポート。
- 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 フルネーム: 数字ではありません
一般的な解決策:
- numpy 関数を使用して判断します: np.isnan() および
xxx は np.nan - 算術演算による判断: 任意の数に 0 を掛けたものは 0
- ファイルを読み取るときにパラメータを追加します: 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)