Python
中心極限定理の気持ちをPythonで書いてみます。 中心極限定理とは、独立同分布に従う確率変数列の部分和は正規分布に分布収束するという定理です。 言い換えると、標本サイズが大きくなるに従って、標本平均は正規分布に近づくと解釈できます。 ここで、サイ…
NetworkXを使ってSNSの分析をするときに便利かもしれない。 誰かの友達の友達をリストアップして可視化する方法です。 やり方は簡単で、最短経路長が2の人(1は友達)を探してくれば良いわけです。 例として、Zacharyの空手クラブを用います。 import networ…
SQL書きすぎてるとpandasの書き方わからなくなる。 pandasでSQLの LAG(value) OVER(PARTITION BY class ORDER BY value) のような処理をどうやって書くのか? groupbyとshiftを使えば一発です。LEAD()の場合はshift(-1)でOK。 import pandas as pd df = pd.D…
ここでは、経済セミナー 2020年12月・2021年1月号に掲載のあった「中心性を使った感染症の制御(小蔵正輝)」という記事を、実際にPythonで(NetworkXを使って)コードを書きながら解説します。 www.nippyo.co.jp 以下で説明するような問題設定下においては…
この記事では、NetworkXを使ったネットワークの中のコミュニティ抽出の手法を、台北の地下鉄を例にして解説します。 実際に分割されたコミュニティの可視化についてもコードを載せておきます。 Girvan–Newmanアルゴリズムとは? Girvan–Newmanアルゴリズムは…
pageviewapiというWikipediaの任意の記事のPV数を取得するAPIを使って見たいと思います。 WikipediaのどんなページのPV数でも一気に調べられます。 これは何に便利かというと、知りたい事柄(例えば有名人、企業、地名など)がどの程度世間から関心を持たれ…
pandasでgroupbyを使って集計をする際に、この量に関しては平均を、また別の量については中央値を取りたい場合などに使える方法です。 まず、DataFrameを定義します。 男女の身長と体重が記録されているとしましょう。 import pandas as pd sample_df = pd.D…
networkxを使って遊んでみます。 下の図のようなネットワーク(グラフ)が与えられたとき、この中の最大の連結成分を取り出します。 見ての通り、{4, 5, 6, 7, 8}が最大の連結成分になります。 まずは、ネットワークを描画してみます。 import networkx as n…
画像処理で遊びたくなったので、画像を読み込んで表示する方法を備忘録的に残しておきます。 OpenCVを使います。 まずは、OpenCVやNupmy、Matplotlibなどをimportして、さらにGoogle Driveをマウントしておきます。 import cv2 import matplotlib.pyplot as …
動画を1秒ずつ画像ファイルにしていく方法です。(0.5秒ごとでも0.1秒ごとでも可能です) ここでは、Google Colab上で、mp4をjpgに変換します。 まずはGoogle Driveにある動画ファイルにアクセスするために、Google Driveをマウントします。 # Google Drive…
PandasのDataFrameの列名を一括で変更する方法です。 df.columns = [リスト] とすれば一括で変えられます! 例を見てみましょう。 import pandas as pd import numpy as np # 適当なDataFrameを作る df = pd.DataFrame({ 'col1': 1, 'col2': np.random.rando…
SpotifyのAPIを使うと任意のアーティストの関連アーティストを取得できます。 Spotify APIの使い方は前回の記事で詳しく説明してるので、ぜひ読んでみてください! 前回の記事: k2-tech.hatenablog.com ミスチルの関連アーティスト20組は誰だ? 関連アーテ…
スクリプト内で、ライブラリのバージョンを確認する方法です。 pandasで試してみましょう。 import pandas as pd pd.__version__ # 1.1.5
osモジュールを使って、現在のディレクトリを変更する方法です。 import os # ディレクトリ変更 os.chdir('/Users/username/downloads/dirname') また、現在のディレクトリを確認する方法は以下です。 os.getcwd() 【お知らせ】 データアナリストのキャリア…
Pythonを使って簡単に業務効率化しましょう! globモジュールを使って、ディレクトリ内にある複数のCSVファイルを一括で読み込み、さらにそれらを縦に結合させる方法です。 例えば、あるフォルダに、何かのログがCSVとして毎日吐き出されるような場合に使え…
Pythonでディレクトリ内のCSVファイルを一気に読み込んで、かつそれらを連結させる方法です。 CSVでログが吐かれている場合など、この方法を使えば一発ですね。 Excelで消耗している方は是非トライしてみてください。流れはこんな感じです。 読み込みたいフ…
pandasで重たいデータを扱う際にマストな関数です! 初参加したkaggleのコンペ「ASHRAE - Great Energy Predictor III」の公開カーネルで使用されていたので、自分もkaggleや仕事で積極的に使っています。 特に、ASHRAEは扱うデータが大きかったので、重宝し…
SpotifyのAPIを使うと、色々と楽しそうなことができるみたいなので試してみます。 この記事では、以下の2つを解説します。 アーティストの人気曲の取得 アーティストのアルバムの取得 とりあえず、自分の好きなaikoとPUFFYとMayday(台湾のアーティスト)の…
任意の期間の日付の列を生成したいときに使います。 1月1日から丸一年分の日付が欲しいときや、ある1週間の日付が欲しいときに重宝します。 # 連続した日付の列を取得 pd.date_range('2020-01-01', periods=7, freq='D') periodsで期間の長さを指定、freqで…
DataFrameの列名を一括で変更する方法です。 df.rename(columns = {'col_name1': 'col_name2'}) とするよりも簡単で便利かもしれません。 例えば、以下の画像のような、dayと数字の間にあるアンダースコア"_"を取り除きたい場合など。 リスト内包表記を使え…
pandas.meltで横持ちのDataFrameを縦に変換する方法です。 DataFrameの列に日付が並んでいる(左から右へday1, day2, ...となる)場合などに有効です。 例えば、次の画像のようなデータを、 このように列として持っていた日付を縦に並べます。 id_varsで、ID…