この記事では、Pythonを使ってcars.csvのデータセットを探索する方法を理解しましょう。
まずデータセットをロードし、次にデータを処理します。
また、データセットを可視化し、最終的なデータセットを準備すると、同じデータセットを使用して様々なモデルを開発することができます。
Cars.csv データセットを Python で解析する手順
この分析にはPandasとNumpyを使用します。
また、Seabornライブラリを使って可視化で遊んでみることにします。
さっそくやってみましょう。
この記事もチェック:PythonとPandasで大規模データセットを扱うコツ4つ
1. Cars.csv データセットの読み込み
データセットは既にCSV形式になっているので、あとはデータをpandasのデータフレームにフォーマットするだけです。
これは、pandas
ライブラリをインポートして read_csv
という pandas データフレームメソッドを使用することで行われました。
read_csvデータフレームメソッドは、CSVファイルのパスを関数の引数として渡すことで使用されます。
このコードでは、head`関数を使用すると、きれいに整理されたpandasデータフレームが得られます。
まず、必要なモジュールとライブラリをインポートすることから始めましょう。
1
2
3
4
5
|
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns. set (color_codes = True )
|
次に、pandas
モジュールを使ってデータをロードします。
1
2
|
df = pd.read_csv( "CARS.csv" )
df.head() |
このデータセットには、428 行
と 15 特徴
があり、BMW, Mercedes, Audi などの異なる自動車ブランドに関するデータ、およびこれらの自動車に関するモデル、タイプ、起源、ドライブトレイン、MSRP などの複数の特徴を持っています。
この記事もチェック:PandasでデータフレームをHTML形式で表示する
2. 無関係な特徴の削除
後節で、与えられた特徴量に基づいて車の価格を計算する必要がある場合。
しかし、全ての特徴が車の価格を決定するために必要なわけではないので、同じように無関係な特徴をデータセットから削除することを目的とします。
除去する特徴は、ドライブトレイン、モデル、インボイス、タイプ、オリジンです。
これらの特徴はすべてコストを決定するのに必要ではありません。
あなたの好みに応じて、特徴を削除したり残したりすることができる。
1
2
|
df = df.drop([ 'Model' , 'DriveTrain' , 'Invoice' , 'Origin' , 'Type' ], axis = 1 )
df.head() |
3. 重複データの発見
どのようなデータセットにおいても、重複・冗長なデータが存在する可能性があります。
これを取り除くために、「参照機能」(この場合はMSRP)を利用します。
希望小売価格を基準にする理由は、2台の車の価格が100%一致することは稀だからです。
重複を除去するために、以下のようなコードを使用します。
行数が428行から410行に減っているのがわかると思います。
1
2
|
print ( "Count before Removing Duplicates: " )
df.count() |
出力は以下のようになる。
Count before Removing Duplicates: Make 428 MSRP 428 EngineSize 428 Cylinders 426 Horsepower 428 MPG_City 428 MPG_Highway 428 Weight 428 Wheelbase 428 Length 428 dtype: int64 |
1
2
3
4
|
df = df.drop_duplicates(subset = 'MSRP' , keep = 'first' )
print ( "Count after Removing Duplicates: " )
df.count() |
Count after Removing Duplicates: Make 410 MSRP 410 EngineSize 410 Cylinders 408 Horsepower 410 MPG_City 410 MPG_Highway 410 Weight 410 Wheelbase 410 Length 410 dtype: int64 |
4. 欠損値やNULL値を見つける
データセットが完璧であることはなく、データセットに欠損値があることはよくあることです。
さて、欠損値を扱うにはいくつかのアプローチがある。
行を削除するか、空の値をその列の全値の平均値で埋めるかです。
開発者にとっては、すべての行が重要なので、行全体を削除するよりも、列の値の平均を取る方がよいでしょう。
まず、このデータセットにどれだけの NULL 値があるのか見てみましょう。
print (df.isnull(). sum ())
|
Cylindersカラムに 2 つの NULL 値があり、残りは明確であることがわかります。
私たちの目的は、この列の2つのヌル値を処理することです。
ヌル値は行247と248
に属することがわかったので、同じ値をすべての値の平均に置き換える。
1
2
3
4
5
6
7
8
9
|
# Calculate mean of all the values of the column val = df[ 'Cylinders' ].mean()
print ( "The mean of the column is: " ,val)
val = round (val)
print ( "Rounded value of the mean of the column is: " ,val)
# Replace the null value with the mean of the column df[ 'Cylinders' ][ 247 ] = val
df[ 'Cylinders' ][ 248 ] = val
|
5. オブジェクトの値を整数型に変換する
まだ見ていないかもしれませんが、MSRP の値は $
で始まっていますが、この値は整数型である必要があります。
したがって、この列のすべての値からドル記号が取り除かれていることを確認する必要があります。
1
2
3
4
5
6
7
|
df[ 'MSRP' ] = [x.replace( '$' ,' ') for x in df[' MSRP']]
df[ 'MSRP' ] = [x.replace( ',' ,' ') for x in df[' MSRP']]
df[ 'MSRP' ] = pd.to_numeric(df[ 'MSRP' ],errors = 'coerce' )
df.head() |
6. ヒートマップの可視化
ヒートマップは特徴量間の相関を見つけるための最良の方法の一つです。
ヒートマップをプロットすると、希望小売価格と馬力の間に強い依存関係があることがわかる。
1
2
3
4
|
plt.figure(figsize = ( 10 , 10 ))
plt.style.use( "seaborn" )
c = df.corr()
sns.heatmap(c,cmap = 'PiYG' ,annot = True )
|
この概念を理解していただき、他の様々なCSVファイルにも応用していただければ幸いです。
お読みいただきありがとうございました。