[Pythonデータ処理]Pythonでcsvドキュメントを前処理してデータを抽出する方法
[問題の背景]
次のテキストファイルを処理します.
grade_gbk.csv(GBK符号化フォーマット)
grade_uft-8.csv(UTF-8符号化フォーマット)
各ファイルの内容は同じで、全部で3つのデータで、各データの第1項は名前で、第2項は国語で、第3項は数学で、第4項は英語です
まずExcelを開き、次のように入力します.
名前
国語
数学
英語
張三
128
136
112
李四
99
106
73
王五
102
148
88
次に2回保存し、最初のファイル名は'grade_gbk.csv'、保存タイプは'CSV(カンマ区切り)(*.csv)';2回目のファイル名は'grade_utf-8.csv′は、保存タイプが"CSV UTF-8(カンマ区切り)(*.csv)"である、2つの異なる符号化フォーマットが得られる.csvファイルは、実際のアプリケーションでは両方の符号化に遭遇する可能性があるので、以下のプレゼンテーションでは2つの符号化について説明する.csvファイルの読み取りについて簡単に紹介します.
[問題解析]
はい.csvファイルが存在するディレクトリの下に新しい.pyファイル、注意.pyファイル名は自分で取ることができますが、csvではありません.py、そうでない場合、コードでcsvを呼び出すと、AttributeError:module'csv'has no attribute'excel'に変更されます.(このエラーの解決については、Python csvモジュールの学習でAttributeError:module'csv'has no attribute'writer'と書き込み後にスペースの問題が発生した-ceoicacのブログを参照)
まず、GBK符号化をどのように読み取るかを見る.csvファイル.ここはpandasライブラリが使えます.
(pandasライブラリインストールコマンドcmdでpip install pandas-iを入力https://pypi.tuna.tsinghua.edu.cn/simplepandasライブラリをインストールできます)
pandasライブラリをインポートするには、次の手順に従います.
loadData()関数の作成:(データプリプロセッシング関数)(file Pathはファイルパス名)
pandasライブラリのread_を呼び出すcsv()関数、パラメータはファイルパス名filePath、符号化フォーマット名encoding='gbk'であり、読み込んだファイル情報はcsv変数に返される.
csvファイルの内容を画面に出力します.
主関数の記述:
完全なコードは次のとおりです.
完了後にプログラムを実行すると、Python Shellは次のように表示されます.
これによりPython表示を使用することができます.csvファイルの内容です.
ただし、[pythonデータ処理]では、Pythonでtxtドキュメントを前処理してデータを抽出する方法について、retNameとretDataを返す手順を示しています.ここではloadData()関数の書き換えについても説明します.
実際にcsvを使用する.valuesはリスト化されたcsvを取得できます.
旧バージョンではas_を使用していましたmatrix()メソッドは同じ機能を果たしますが、実行プロンプトはas_matrix()メソッドは、将来のバージョンで削除されます.メンバー変数valuesで置き換えることをお勧めします.すなわちcsv.valuesはcsvに代わった.as_matrix()
csvについて.valuesのようなリストでは、名前と点数を抽出するのは簡単です.
csvを巡るvaluesの各行:
各行の最初の列を名前として抽出します.
各行の2列目以降をスコアとして抽出する:(line[1:]はnumpy.array形式であり、tolist()でPythonのlistリストに変換する必要がある)
最後にretNameとretDataを返します.
主関数の記述:
このため、生徒の成績表を処理するGBK符号化形式となる.csvファイルの完全なコードは次のとおりです.
UTF-8符号化の処理も簡単です.
名前とスコアが表示されます.
次のテキストファイルを処理します.
grade_gbk.csv(GBK符号化フォーマット)
grade_uft-8.csv(UTF-8符号化フォーマット)
各ファイルの内容は同じで、全部で3つのデータで、各データの第1項は名前で、第2項は国語で、第3項は数学で、第4項は英語です
まずExcelを開き、次のように入力します.
名前
国語
数学
英語
張三
128
136
112
李四
99
106
73
王五
102
148
88
次に2回保存し、最初のファイル名は'grade_gbk.csv'、保存タイプは'CSV(カンマ区切り)(*.csv)';2回目のファイル名は'grade_utf-8.csv′は、保存タイプが"CSV UTF-8(カンマ区切り)(*.csv)"である、2つの異なる符号化フォーマットが得られる.csvファイルは、実際のアプリケーションでは両方の符号化に遭遇する可能性があるので、以下のプレゼンテーションでは2つの符号化について説明する.csvファイルの読み取りについて簡単に紹介します.
[問題解析]
はい.csvファイルが存在するディレクトリの下に新しい.pyファイル、注意.pyファイル名は自分で取ることができますが、csvではありません.py、そうでない場合、コードでcsvを呼び出すと、AttributeError:module'csv'has no attribute'excel'に変更されます.(このエラーの解決については、Python csvモジュールの学習でAttributeError:module'csv'has no attribute'writer'と書き込み後にスペースの問題が発生した-ceoicacのブログを参照)
まず、GBK符号化をどのように読み取るかを見る.csvファイル.ここはpandasライブラリが使えます.
(pandasライブラリインストールコマンドcmdでpip install pandas-iを入力https://pypi.tuna.tsinghua.edu.cn/simplepandasライブラリをインストールできます)
pandasライブラリをインポートするには、次の手順に従います.
import pandas as pd
loadData()関数の作成:(データプリプロセッシング関数)(file Pathはファイルパス名)
def loadData(filePath):
pandasライブラリのread_を呼び出すcsv()関数、パラメータはファイルパス名filePath、符号化フォーマット名encoding='gbk'であり、読み込んだファイル情報はcsv変数に返される.
csv = pd.read_csv(filePath, encoding='gbk')
csvファイルの内容を画面に出力します.
print(csv)
主関数の記述:
if __name__ == '__main__':
loadData('grade_gbk.csv')
完全なコードは次のとおりです.
def loadData(filePath):
csv = pd.read_csv(filePath, encoding='gbk')
print(csv)
if __name__ == '__main__':
loadData('grade_gbk.csv')
完了後にプログラムを実行すると、Python Shellは次のように表示されます.
0 128 136 112
1 99 106 73
2 102 148 88
これによりPython表示を使用することができます.csvファイルの内容です.
ただし、[pythonデータ処理]では、Pythonでtxtドキュメントを前処理してデータを抽出する方法について、retNameとretDataを返す手順を示しています.ここではloadData()関数の書き換えについても説明します.
実際にcsvを使用する.valuesはリスト化されたcsvを取得できます.
[[' ' 128 136 112]
[' ' 99 106 73]
[' ' 102 148 88]]
旧バージョンではas_を使用していましたmatrix()メソッドは同じ機能を果たしますが、実行プロンプトはas_matrix()メソッドは、将来のバージョンで削除されます.メンバー変数valuesで置き換えることをお勧めします.すなわちcsv.valuesはcsvに代わった.as_matrix()
csvについて.valuesのようなリストでは、名前と点数を抽出するのは簡単です.
csvを巡るvaluesの各行:
for line in csv.values:
各行の最初の列を名前として抽出します.
retName.append(line[0])
各行の2列目以降をスコアとして抽出する:(line[1:]はnumpy.array形式であり、tolist()でPythonのlistリストに変換する必要がある)
retData.append(line[1:].tolist())
最後にretNameとretDataを返します.
return retName, retData
主関数の記述:
if __name__ == '__main__':
Names, Grades = loadData('grade_gbk.csv')
print(Names, Grades)
このため、生徒の成績表を処理するGBK符号化形式となる.csvファイルの完全なコードは次のとおりです.
import pandas as pd
def loadData(filePath):
csv = pd.read_csv(filePath, encoding='gbk')
retName = []
retData = []
for line in csv.values:
retName.append(line[0])
retData.append(line[1:].tolist())
return retName, retData
if __name__ == '__main__':
Names, Grades = loadData('grade_gbk.csv')
print(Names, Grades)
UTF-8符号化の処理も簡単です.
import pandas as pd
def loadData(filePath):
csv = pd.read_csv(filePath, encoding='utf-8')
retName = []
retData = []
for line in csv.values:
retName.append(line[0])
retData.append(line[1:].tolist())
return retName, retData
if __name__ == '__main__':
Names, Grades = loadData('grade_utf-8.csv')
print(Names, Grades)
名前とスコアが表示されます.
[' ', ' ', ' '] [[128, 136, 112], [99, 106, 73], [102, 148, 88]]