とらりもんHOME  Index  Search  Changes  Login

python

モジュールやライブラリのインストール

pipという(シェルの)コマンドでできるが、インストール後, なにかとトラブルが多い。

$ sudo apt-get install python-pip
$ pip install pylab

とか。

できるだけ, Linuxディストリのパッケージで入れよう!

$ sudo apt-get install python-pandas python-skimage python-matplotlib python-numpy python-opencv
$ sudo apt-get install python3-pandas python3-skimage python3-matplotlib python3-numpy

python3でopenCV:

pip3 install opencv-python

よくあるエラーの原因

パッケージング管理

パッケージングを支える技術 pyconjp2016 : pipとかpyenvとか。

一般的な使い方

pythonスクリプトをLinuxシェルから実行

python3 hogehoge.py

pythonスクリプトをLinuxシェルから実行し, Linuxシェルに戻らないでそのままpythonコンソールに留まる。

python3 -i hogehoge.py

pythonスクリプトをpythonコンソールから実行する。

exec(open("hogehoge.py").read())

Linuxシェルのコマンドを走らせる:

import os
os.system('rm abc.txt')

pythonスクリプトに引数を渡す:

import sys
filename=sys.argv[1]
argvs=sys.argv
n=len(argvs)

pandas

CSVファイルをデータフレームを読み込む:

普通にやるなら:
df = pd.read_csv("data.csv")
このとき, 最初の行が, 列の項目名になる。
最初の9行目をスキップ:
df = pd.read_csv("data.csv", skiprows=9)
特定の列を行のindexにする:
df = pd.read_csv("data.csv", index_col='#ymd')
その列を日付としてindexにする:
df = pd.read_csv("data.csv", index_col='#ymd', parse_dates='#ymd')

データフレームの特定の列だけを抽出:

df_new = df[['label1','label2']]    ... 2重の[[ ]]であることに注意!

データフレームの特定の行だけを抽出:

df[df.index.month>8]  ... (indexが年月日の場合)9月以降の行を抽出
df['2010-01-01':'2010-10-31']  ... (indexが年月日の場合)ある日付範囲だけを抽出

データフレームの特定の要素を抽出:

x=df.iloc[3,4]

データフレームの特定の要素に値を書き込む:

df.iloc[3,4]=2.718

日付を3日だけ増やす:

import datetime
date + datetime.timedelta(days=3)

データフレームのカラム名の付替え:

df.columns=['item1', 'item2']
あるいは, 
df_new=df.rename(columns={'label1':'LABEL1', 'label2':'LABEL2'})

データフレームの末尾に別のデータフレームを結合:

df_new=df1.append(df2)

データフレームに別のデータフレーム(シリーズ)を列として結合

df['column name']=df_other['column name']

データフレームの特定の行を3倍する:

df['label2']*=3

データフレームを列方向に演算

df.mean(axis=0)
df.var(axis=0)

データフレームを行方向に演算

df.mean(axis=1)
df.var(axis=1)
df.max(axis=1)

↑これらを応用してこんなの↓もできる:

df.mean(axis=1).max(axis=0)  ... 行方向に平均とったものの, 列方向の最大値

共通のインデックスを持つ2つのデータフレーム(シリーズ?)をくっつけて1つのデータフレームにする:

pd.concat([df1, df2], axis=1)

データフレームをCSV形式で標準出力:

df.to_csv(sys.stdout)     ... sys.stdoutをファイル名(''でくくる)にかえると, ファイルへの出力になる。

データフレームで、|YYYY | MM | DD| → |yyyy-mm-dd| (すなわち、YYYYとMMとDDをすべて同じ列にする)

pd.DataFrame({'yyyy-mm-dd':df[['YYYY','MM','DD'].apply(lambda x : '{}/{}/{}'.format(x[0],x[1],x[2]), axis=1)})

データフレームの特定の列のユニークな要素を取り出す

pd.Series(df['name'].values.reval()).unique()
Last modified:2017/09/06 16:31:10
Keyword(s):
References:[とらりもんHOME]