pythonはじめました
なんででもかんでもpyつければいいってもんじゃぁねぇ
変なtsvをたくさん処理しなくちゃ行けなくなり、pandasが便利そう?
に見えたので、試しに使っています。
pythonの環境構築やら使い方に関するメモです。
入門
ドットインストールのpython3入門をやり、 pythonizmをざっと読む、リファレンス代わりにする。
ドットインストールは楽でいいですね。1動画3分でテンポよくすすんでいい。
読書
科学技術計算のためのPython入門――開発基礎,必須ライブラリ,高速化
これを読みました。こっちも体系的にかいてあってかなりよかった。
環境設定
本のサポートページがあって、そこに著者がだいたい書いてくれている
Macでやるんだったのでhomebrewでpyenvを入れて、
そこ経由でanacondaをインストールしました。
brew install pyenv
pyenv install anaconda3-4.2.0
作業の流れ
基本的にファイルを読み込んで整形して、別形式のファイルにすることがおおいので、
- jupyter notebook上で確認とデータの整形
- OKなら単一のスクリプト(エクスポート)
という流れでやってます。
jupyternotebook、すぐにデータの確認ができて便利。
メモ
jupyter notebookの起動方法
jupyter notebook
pandasのデータ読み込み
import pandas as pd
pd.read_csv('FILENAME', delimiter=',', low_memory=False)
#low_memoryは重たいファイル読み込む時に使う
データフレーム操作
A,B,Cの列だけ取り出す。
dataframe.ix[:, ['A','B','C']]
JOIN
#joinする,howにleft,rightなどをしていできる
pd.merge(dataframe1, dataframe, how='left')
データフレームに適当な数字を入れる
#numpyを使って0~3000の数字の1行をデータフレームに加える
import numpy as np
length = len(dataframe)
dataflame['dummy']=np.random.randint(0,3001,length)
NaNの処理(読み込んだ時に何も入ってない場合とか)
#Nanがある1列を落とす
dataframe.dropna()
#NaNを特定の文字へ変換する
#例NaNを0に変換する(列指定も可能)
dataframe.fillna(0)
データの型変換
#現在の肩を確認
dataframe.dtypes
#intにする(列指定も可能)
dataframe.astype('int')
行、列の参照と操作
#行の表示
dataframe.index
#列の表示
dataframe.columns
#列の名前変更(X,Y,Zに変わる)
dataframe.columns=['X','Y', 'Z']
#全ての列へ何か処理する
dataframe.apply(function, axis=1)
#重複削除 mysqlでいうselect distinct(column)
dataframe['column'].drop_duplicates()
#groupby 特定キーにまとめて集計(sum, meanなどいろいろある)
dataframe.groupby('column').sum()
その他
既存のansibleと見事にバッティングしたのでこれで解決
ansibleで利用するpythonを指定する方法
dataflameのmargeの時にくっつく方のintがfloat64型に強制的に変更されてしまうっぽい。
出力の時に気をつけるべし。
とりあえずこんなものですかね。次はグラフ描画をやっていきたい。