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型に強制的に変更されてしまうっぽい。
出力の時に気をつけるべし。

とりあえずこんなものですかね。次はグラフ描画をやっていきたい。

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

Jp, Tokyo https://connvoi.com