目次から探す
実践例:CSVファイルから1行ずつ読み込んで処理する
実際にCSVファイルから1行ずつ読み込んで、データの前処理、分析、後処理を行う例を見ていきましょう。
データの前処理
データの前処理では、データのクレンジングと正規化を行います。
データのクレンジング
データのクレンジングでは、欠損値や不正な値を取り除く処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、空白行や不正な値を含む行を除外しています。
import csv
cleaned_data = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
# 空白行の除外
if not row:
continue
# 不正な値を含む行の除外
if any(value == '' or value is None for value in row):
continue
cleaned_data.append(row)
print(cleaned_data)
データの正規化
データの正規化では、データのスケールを揃える処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、数値データを0から1の範囲に正規化しています。
import csv
normalized_data = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
normalized_row = [float(value) / 100 for value in row]
normalized_data.append(normalized_row)
print(normalized_data)
データの分析
データの分析では、集計処理と統計処理を行います。
集計処理
集計処理では、データの合計や平均などを求める処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、各列の合計値を計算しています。
import csv
column_sums = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
for i, value in enumerate(row):
if len(column_sums) <= i:
column_sums.append(0)
column_sums[i] += float(value)
print(column_sums)
統計処理
統計処理では、データの分布や相関などを求める処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、各列の平均値と標準偏差を計算しています。
import csv
import numpy as np
data = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
data.append([float(value) for value in row])
data_array = np.array(data)
column_means = np.mean(data_array, axis=0)
column_stds = np.std(data_array, axis=0)
print(column_means)
print(column_stds)
データの後処理
データの後処理では、結果の出力とデータの保存を行います。
結果の出力
結果の出力では、分析結果を表示する処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、各列の合計値を表示しています。
import csv
column_sums = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
for i, value in enumerate(row):
if len(column_sums) <= i:
column_sums.append(0)
column_sums[i] += float(value)
for i, column_sum in enumerate(column_sums):
print(f'列{i + 1}の合計: {column_sum}')
データの保存
データの保存では、処理結果をファイルに保存する処理を行います。
以下のサンプルコードでは、CSVファイルから1行ずつ読み込み、正規化したデータを新しいCSVファイルに保存しています。
import csv
normalized_data = []
with open('data.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
normalized_row = [float(value) / 100 for value in row]
normalized_data.append(normalized_row)
with open('normalized_data.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
for row in normalized_data:
writer.writerow(row)
これで、CSVファイルから1行ずつ読み込んで処理する方法を実践的な例で学ぶことができました。