LoginSignup
3
3

More than 5 years have passed since last update.

python始めた

Posted at

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

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

3
3
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
3