3
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonを利用したデータクリーニング

Last updated at Posted at 2020-03-04

概要

  • データ処理の下準備として、csvファイルのデータクリーニングをする
  • 空白、記号、数字、単語の削除、単語の切り出し、特定のデータ要素への書き込み、csv出力
  • Python 3.x系, Pandas, reを利用
  • メモ代わりに書き出してみたものです: テクニカルタームの誤り、説明不十分な点が多いと思いますので、随時修正します

実際のコード

0. ライブラリの読み込み

今回はpandasre(正規表現利用のためのモジュール)を利用する

import pandas as pd
import re

1. データの読み込み

df = pd.read_csv("filename.csv")

2. いらない要素(空白、記号、数字、単語)の削除

列全体を対象とし、いらない要素の削除を行う

df['列名'] = df['列名'].str.replace(r'(\d)', '') # 数字を削除
df['列名'] = df['列名'].str.replace('-', '') # 記号を削除
df['列名'] = df['列名'].str.replace('word', '') # 単語を削除
df['列名'] = df['列名'].str.strip() # 冒頭・末尾の空白を削除
df['列名'] = df['列名'].str.replace(r'(\d)', '').str.replace('-', '').str.replace('あ', '').str.strip()
# これらは同時に実行することもできる

3. 単語の切り出し

やりたいこと

name という列に、複数の単語からなる要素がそれぞれ存在するとする
例:

df['name'][0] = "I have a pen."
df['name'][1] = "She has a pen."

これに対し、はじめの単語を抜き出し、subject という新しい列にリストとして格納する
例:

df['subject'][0] = "I"
df['subject'][1] = "She"

コード

temp = df['name'].str.split() # 単語に分解
subject = [] # 切り出した単語を格納するための空のリストを作成
for item in temp: 
    subject.append(item[0]) # 各行の最初の単語をリストに格納
df['subject'] = subject # subjectという列名でもとのデータフレームに追加

4. 特定のデータ要素に書き込む

.at[] を使うことで特定のデータにアクセスすることができる

df.at['行名','列名'] = "これはテストです"
df.at[行番号,'列名'] = "これはテストです"

5. csv出力

最後に、編集したデータフレームをcsvに出力する。encoding='utf_8_sig'を付加することで、文字化けを防ぐことができる。

df.to_csv("filename_v2.csv", encoding='utf_8_sig')
3
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?