Hannari Python #15 Pandas Hands on @Spookies https://gyazo.com/c05bc30fb55921bf02053b9a0c937e2f
2019年3月15日
19時15分開場
19時30分開始
Hands On リポジトリ
connpass
予定
運営ごあいさつ
スプーキーズさんから
アイスブレイク
くまちゃんLT
Pandas Hands On
------ 書き込みスペース ------
Github, Dockerなど事前質問 あと自由書き込み
NOTAInc.さんからお菓子が届きました!
https://gyazo.com/3018cc9db965ff676bf4c3adcfe25c1c
スプーキーズさんからお菓子と飲み物の差し入れをいただきました!!
https://gyazo.com/041c11c86ea60473438bf027bf676610
1. 自己紹介
ひでやんひでやん.iconです。運営の一人です。明日のPandas Hands On よろしくお願いいたします。 あと、いつもmasayuki14さんがおっしゃっていますが、運営は常に募集中ですので、ぜひご参加ください。 運営はひとまず、勉強会に多く参加することってのが条件です。運営になると勉強会の参加は無料になりますので、
毎回参加されている方などはぜひ!
あと、スクラップボックスにどんどん自分のページも作ってください!!!リンクできたり楽しいです。
運営のMasa masayuki14.icon です。今回は都合により不参加です。ハンズオンということですがここは 学校ではない ので自ら学びにいく姿勢を大切にしましょう!
2. くまちゃんLT
内容
「Python始めて半年で感じたこと」プログラミング初心者が半年やってみての感想とか学習方法とか話します。
何かしら参考になれば幸いです。
質問
おしゃれなスライドでしたが、keynoteで作成されたんですか?
→keynoteです
雑記
「独学プログラマ」は初心者におすすめ
「退屈なことはPythonにやらせよう」は確かに分厚い。本屋さんでびっくりした。
写経は時間がかかりすぎる。
Altairを選んだ理由:カッコの数が少ない
どれだけ学んでもすごい人のコードを写経は勉強する手法として重宝してます。作りたいものがあるのが一番伸びるというのはとても同意します!
altair も プラスやバーでグラフを合成するんですね。これってRでよく使われているもので、他のいくつかのライブラリでも採用されている描画作成方法ですね。具体的なライブラリ名忘れましたが・・。個人的な描画ライブラリの一押しはpandas-bokehです。
by 大野
→ありがとうございます!pandas-bokeh使ってみます by熊田
作りたいものがあって、必要になったらその周辺知識をその時に勉強していくってやり方、私も最近そんな感じのが良いと思ってたので、共感しました!
3. Pandas Hands On
内容
巷にありふれたpandas記事とは少し違う、リアルで泥臭くて、キラキラしていない pandas の使い方を、某省のデータを使って、学んで、というか悪戦苦闘していきます。
01
データの読み込み。pd.read_excel("../../../data/2008_kansai/ë╘ò▓âfü[â^2008(è╓É╝).xls")
==> pd.read_excel("../data/2008_kansai/ë╘ò▓âfü[â^2008(è╓É╝).xls")
Pythonのスライスが分かっていないとPandasの好きなとことを取れませんよー
02
今回の日付データは特殊。年、月、日が違うコラムにある。
これを普通の2019/03/15みたいな形にしたい。
ググったら色々記事が出てくるが、公式ページを見たほうが良い。
データ読み込みのタイプの確認。dtype
やりたい型に astype()
数値データを文字にして、文字列をくっつけて日付プラス時間のデータを作る
str_concat = 2008/05/23/23 # ==> yaer, month, day, hourの並びになっている。
pd.to_datetime(str_concat) ==> エラー 時間を認識しない
pd.to_datetime(str_concat, format="%Y/%m/%d/%H") ==> 後ろでフォーマットとして指定すると時間まで時間になるはずがエラー
%Hが0-23時しか対応していない。このデータは1−24時で作られている。のでそれに対応してstr_concatを作るとpd.to_datetime()で日付データが作れる。
03
pathlib以前も発表されてたのがあって便利そうで使いたい!
ここでもファイル指定変更必要
base_dir = Path("../data")
base_dir.exists()
かっこよく4行で読み込めるようになった。
str_concat_h0_23 = df"年".astype(str)+"/"+df"月".astype(str)+"/"+df"日".astype(str)+"/"+(df"時"-1).astype(str) # 時から1引いてる df"date_hour" = pd.to_datetime(str_concat_h0_23, format="%Y/%m/%d/%H") df.set_index("date_hour", inplace=True)
df
しかしこれまでの苦労があったのです。(遠い目)
データフレームを結合する
よく使うのですが、どっち方向かわからなくなるなぁw axis
xls=>xlsx変更時にコラムの名前変わってしまった問題
名前対応ファイルがあった。 ==> rename関数作成
to_pickle()で保存。バイナリで保存されるので早い!
ようやくここでcsvファイルくらいになった。
心が折れないように頑張ろう。
04
dropna() axisで消す方向(行方向、列方向)が決められる。
一旦データが少ない場所を消し去る
cal_above_25k > 25000
kafun.iloc':, cal_above_25k' / これで25,000以上データのないところは消え去る。
clip()を使って
05
groupby()は説明すると長くなるけど、統計的に見るのに良い
スプーキーズさんお部屋の空気がきれいでマスク無しではなが出ないw
質問とか
%matplotlib inline ってなんですか?
-> jupyter notebook 上でグラフをアウトプットしたいときに呼ぶためのマジックコマンドです。これがないと、画像としてグラフが起動されます。
ありがとうございます!
豆腐の意味が理解できました。
*_kansai/* の*は正規表現てやつですか?
-> ワイルドカードと呼ばれるもので、正規表現で言う .*と一緒です。
pandas関係ないですが、jupyter notebookで上から1行ずつ自動で実行するには
どうしたら良いでしょうか?
行消すときはdel使うほうがメモリ管理的にもおすすめ。
修正が早くて追いつけませんでした。
→"date_str"を消したらエラーなしでいけました!!
macかつdockerの環境ですが、以下の処理でエラーになりました。
kansai_kafun_files = []
for p in base_dir.glob("*_kansai/*"):
# AMeDASだけ弾くと .lockファイルも入ってしまうので、読めない謎の文字で引っ掛けてみる
if p.name.startswith("ë╘ò▓âfü[â"):
kansai_kafun_files.append(p)
kansai_kafun_files
kansai_kafun_files = []
for p in base_dir.glob("*_kansai/*"):
# AMeDASだけ弾く
if not p.name.startswith("AMeDAS"):
kansai_kafun_files.append(p)
kansai_kafun_files
↑こっちだけ実行すればエラーにならずに後続の処理に続けられました
scrapbox で square bracket ってどうやって書くんでしょう。
PCの電源がすごい早さで減っていく
家で咀嚼したら、かなりレベルアップできそう
奈良・京都の花粉がやばい→盆地は花粉も溜まる?
------会場利用についての諸注意 ------
トイレ
廊下出て突き当り手前の右側
ゴミ
テレビ横のゴミ箱へ
分別をお願いしています(普通のゴミ、ペットボトル、綺麗なプラ系、空き缶)
喫煙について
喫煙スペースはありません
全館禁煙となっております
避難口
廊下出て突き当り右で非常階段
立ち入り禁止エリア(執務スペース)
部屋の中央より奥は立ち入り禁止とさせて頂きます
SNS等での写真公開について
執務スペースが映らない角度からの撮影であればブログ・Twitter等アップロード問題ありません
Wifi情報も映らないようにしてください
良識の範囲でお願い致します
ハッシュタグ: 当会場について紹介頂ける場合は #スプーキーズ でお願い致します wi-fi・電源
wi-fi: ホワイトボードに記載
電源: 空いているタップをご利用ください