Movatterモバイル変換


[0]ホーム

URL:


プロクラシスト

今日の寄り道 明日の近道

PROCRASIST

procrasist.com

Profile

ほけきよ

趣味は旅・写真・自転車な、俗世にまみれた技術者 かたちあるもの、ないもの問わず、良いものは良い。というスタンスで記事を書いていきます。

Search

Categories




【注目記事】 Pythonでゼロから機械学習/データ分析を学ぶためのサイトマップ

pythonでのデータ分析時、死ぬほど調べるTipsをまとめておく。


スポンサーリンク

f:id:imslotter:20190117213706p:plain

こんにちは、ほけきよです。

pythonでデータを取り扱っているとき「あれ、これどうやるんだっけ??」ってなること、ありませんか?僕は10分に1回程度なります。

いや、覚えろと自分でも思うんですが、覚えられないんですよね。100回くらい同じコマンドを調べてたりする。物覚えが良くないので、ココを見れば絶対大丈夫なようにしておこうと思い、まとめてみました。

jupyterで最初に開くときに読み込むモジュールたち

どうせ色々やっておくと、これらは必要になってくるので、もうはじめにコピペしておけばいい。

%matplotlib inlineimport jsonimport osimport pandasas pdimport numpyas npimport matplotlib.pyplotas pltimport scipyimport datetime

datetime

日付⇔文字列の変換

これ、100回くらい調べている。

  • string ⇨ datetime フォーマットに気をつける。
from datetimeimport datetimeas dttstr1 ='2019-01-01 00:00:00'tdatetime = dt.strptime(tstr,'%Y-%m-%d %H:%M:%S')tstr2 ='2019/01/01 00:00:00'tdatetime = dt.strptime(tstr,'%Y/%m/%d %H:%M:%S')
  • datetime ⇨ string
from datetimeimport datetimeas dttdatetime = dt.now()tstr1 = tdatetime.strftime('%Y-%m-%d')# 2018-1-18tstr2 = tdatetime.strftime('%Y/%m/%d %H:%M:%S')# 2018/1/18 12:34:56

datetimeの足し算引き算

now = datetime.now()tomorrow = now + datetime.timedelta(days =1)#今より1日後nextweek = now + datetime.timedelta(weeks =1)#今より一週間後

引数はseconds,minutes,days,weeks

json

dict型⇔json

import jsonorig_data = {"a":1,"b":2,"c":3}json_data = json.dumps(orig_data)# dict -> jsondict_data = json.loads(json_data)# json -> dict

jsonファイルの入出力

# ファイルを開くwithopen('input.json')as f:    json_data = json.load(f)# ファイルを保存(辞書形式のデータ)withopen('output.json','w')as f:    json.dump(dict_data, f, indent=4)

datetimeをjsonにする時、エラーが出る

どうやるんだっけ

import datetimeimport jsontime_data = {"now":datetime.datetime.now()}json_data = json.dumps(time_data)# dict -> json

TypeError: Object of type 'datetime' is notJSON serializable

解決策 : default引数に下記関数を与え、対応していない方に対するフォーマットを指定。

from datetimeimport datetimeimport jsontime_data = {"now":datetime.now()}defsupport_datetime_default(o):ifisinstance(o, datetime):return o.isoformat()raiseTypeError(repr(o) +" is not JSON serializable")    json_data = json.dumps(time_data, default=support_datetime_default)print(json_data)

{"now": "2019-01-17T21:09:03.966641"}

pandas

~以外を表すやつ

df[df.a >0]# aというカラムが0より大きいものを抽出df[~df.a >0]# aというカラムが0より大きいもの"以外"を抽出

andとor

pythonの文法と違うので、注意。&,|を使うのと、カッコでくくっておくことが大事

df[(df.a>0) & (df.b>0)]# anddf[(df.a>0) | (df.b>0)]# or

inf弾く

df.replace([np.inf, -np.inf], np.nan)

リストをdfにサクッと変換

列の名前は必須

import pandasas pdimport numpyas npA_23 = np.linspace(0,5,6).reshape(2,3)#2行3列"""array([[0., 1., 2.],       [3., 4., 5.]])"""df_ = pd.DataFrame(A_23,columns=["a","b","c"])#列をcolumnに合わす.index=は任意"""  a   b   c0 0.0 1.0 2.01 3.0 4.0 5.0"""

datetimeとして読み込み

  • フォーマットはきちんと合わせておく
df.date=pd.to_datetime(df.date,format="%Y/%m/%d %H:%M:%S")

読み込み時にcodecのエラーが出る

import codec が必要になることに注意

with codecs.open("file.csv","r","Shift-JIS","ignore")asfile:    df = pd.read_table(file, delimiter=",")

DataFrameのfor文

色々あるけど、一番使うのはiterrowな気がする。各rowの0番目はindex, 1番目にはまとめてデータテーブルが入っている

A_23 = np.linspace(0,5,6).reshape(2,3)#2行3列df_ = pd.DataFrame(A_23,columns=["a","b","c"])#列をcolumnに合わす.index=は任意"""  a   b   c0 0.0 1.0 2.01 3.0 4.0 5.0"""for rowin df_.iterrows():print(row[0],row[1]["a"])#取り出し方の癖に注意"""0 0.01 3.0"""

numpy

linspaceとarangeの違い

  • linspace : 範囲の指定を重視
  • arange : 幅の指定を重視

numpyでサクっと配列確保

np.zeros(N)#N次元のゼロ配列np.zeros((N,M))#(N, M)のゼロ配列

nanの判定

np.isnan(A)

最大値と、その引数

A = np.array([1,2,10,4,5])print(A.max(),A.argmax())"""10 2"""

ゼロ除算の回避

a = [1,0,2]b = [0,0,4]c = np.divide(a, b, out=np.zeros_like(a), where=b!=0)#

条件を満たすものだけ抽出

b = a[np.where(a>3)]
  • コンボ : nanを除外した要素だけ抽出することもできる
A[np.where(~np.isnan(A))]

matplotlib

種々の調整

www.procrasist.com

まとめ

まだある気がするのですが、とりあえず本当にいつも調べる者たちだけでもということでまとめておきました。随時メモ代わりに更新すると思います。

是非ご参考に!ではではっ

プロフィール
id:imslotterid:imslotterはてなブログPro

Procrastination(回り道)
をしたあなたが、来てよかったなと
知恵や活力を得て帰っていく。
そんなブログを目指します。

お仕事のご依頼や質問はコチラへどうぞ

imslotter1👶gmail.com
※👶を@に変えてクダサイ

検索
新着順はてブ順注目順
アクセス順
スポンサーリンク

Copyright © 2017 PROCRASIST All Rights Reserved.

PROCRASIST

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp