はじめに
データの前処理をする際に使用頻度の高かったコマンドのメモ。
詳細は、pd.read_csvとかで検索してください。
負荷の低い処理とかについては勉強中、もっと楽な書き方などあれば誰か教えてください。
以下に分けて書いていく予定。
- データの読み込み、確認 ←今回はこれ
- データの加工、書き出し
- 数値データの処理
環境:Python 3.8.5(Windows)、Anaconda、Spyder など
カレントディレクトリを作業フォルダに移動
import os
os.chdir("C:/Users/xxx … ")
csvの読み込み
データフレームにcsvの内容を格納する
import pandas as pd
file = "./data/datafile.csv"
# zipやgzファイルのまま読み込みも可能
df = pd.read_csv("./data/datafile.csv.zip")
df = pd.read_csv("./data/datafile.csv.gz")
# そのまま読み込むと1行目=ヘッダー、index列なしとして読み込む
df = pd.read_csv(file)
# index_colでインデックス行を指定
df = pd.read_csv(file,index_col=0)
# herderでヘッダ行を指定(それより上は破棄)
df = pd.read_csv(file, header=0)
df = pd.read_csv(file, header=[0])
df = pd.read_csv(file, header=None)
# usecolでカラムを指定して取得
df = pd.read_csv(file,usecols=["time"])
# keep_default_na=Falseとすると、欠損値を自動でNanにしなくなる(データ型がstrになるが)
df = pd.read_csv(file,keep_default_na=False)
# nrowsで読み込む行数を指定
df = pd.read_csv(file,nrows=10)
# skiprowsで読み込みを飛ばす行数を指定
df = pd.read_csv(file,skiprows=10)
df = pd.read_csv(file,skiprows=range(1,10))
フォルダ内の全csvを取得
import glob
import_dir = "C:/Users/xxx … "
files = sorted(glob.glob(import_dir + '/*.csv'))
# CSVファイルの中身を読み出して、データフレームのリスト形式にまとめる
csv_list = []
for file in files:
csv_list.append(pd.read_csv(file))
データフレームを結合
# 下方向に結合する
con_csv = pd.concat(csv_list)
# ignore_indexで元データのindexを破棄して番号を振りなおす
con_csv = pd.concat([df1,df2], ignore_index=True)
# 右方向に結合する
con_csv_1 = pd.concat([df1,df2], axis=1)
データの内容を確認する
データの中身を確認
# データの先頭を表示(デフォルトは5行)
df.head(3)
# データの末尾を表示
df.tail(3)
データ型などを確認
# カラムごとのデータ型を取得
df_types = df.dtypes
# インデックス数、カラム数、データ型を確認
df_info = df.info()
カラム名、インデックスの一覧を取得
# カラム名一覧を取得(index形式で出力される=list形式ではない)
df.columns
# インデックス一覧を取得(index形式)
df.index
データフレームの要素を参照する
# データフレームの1データを取得する
d = df.iat[1,2]
# データフレームの1列を取得する
col = df["time"]
col = df.iloc[:,3]
# データフレームの1行を取得する
row = df.iloc[3,:]
参考
調べているときはだいたいこの2サイトにたどり着くことが多かったです。
note.nkmk.me
DeepAge