投稿

Translate

集計・データの見える化のプログラムリスト

イメージ
「データサイエンス チュートリアル」の動画付きチュートリアルの2nd STEPを終え、集計、データの見える化までは、なんとなくやり方がわかるようになってきたと思います。 今まで、出てきたプログラムをリストアップしました。 一通り、動画付きチュートリアルを終えた方は、索引代わりにお使いください。 ********** ■ 1st  STEP  #4 Section 2 ライブラリの選択とデータの読み込み ① import ライブラリ名 as ライブラリの略称 ② pd.read_excel('データのある場所/データ名.xlsx ') #5 Section 3 読み込んだデータの確認(1) ③ データ名 ④ データ名.head() ⑤ データ名.tail() #6 Section 4 読み込んだデータの確認(2) ⑥ len(データ名.index) ⑦ データ名[“列名""] ⑧ データ名[“列名""].unique() #7 Section 5 データ型 ⑨ データ名.dtypes ⑩ pd.read_excel(""データのある場所"", dtype = {“列名"": データ型}) #8 Section 6 列の参照 ⑪ データ名[“列名”] ⑫ データ名[[“列名”]] ⑬ データ名[データ名[“列名”] > 数字] #9 Section 7 数値の最大値の求め方 ⑭ データ名[“列名""].max(axis=0) ⑮ データ名.describe() ⑯ print(“列名"") ⑰ データ名.sort_values(“列名"",ascending=False) #10 Section 8 データ型の変更(キャスト) ⑱ データ名.astype({“列名”:データ型}) #11 Section 9 欠損値の見つけ方・削除方法 ⑲ データ名.iloc[行番号 :  ] ⑳ データ名.isna().sum() ㉑ データ名.dropna() #12 Section 10 queryを使った複数条件での抽出 ㉒ データ名.query(“数字1 <= 列名 <= 数...

#30 Section 28 ピボットテーブル(2)

イメージ
さて、「2nd STEP 集計とグラフ描画」は、最後の動画となります。 ここまで読んでいただき、ありがとうございました。 データサイエンティストが、どのようなプログラムを書いているのか、試行錯誤も含めて、伝わったかなぁと思います。プログラムを書くという作業の背景を理解して、ビジネスの現場で データ思考 を心がけていただくことを期待します。 また、このブログで、データサイエンスに興味を持ち、もっと高度なプログラムを書いてみたいと思った方もいることでしょう。ブログの参考図書を参考に、データサイエンスの大海原に漕ぎ出していきましょう。 本セクションでは、円グラフに現れている数値が本当に価格帯ごとの 比率 (%)になっているかどうかをピボットテーブル+αで確認していきます。 グラフで傾向をつかむだけでなく、その数値を把握することを求められるケースがしばしばありますので、ピボットテーブルで求めたクロス集計表にひと手間加えて、比率(%)がわかる表の作り方を身に付けましょう。「 pivot_table 」では、 欠損値を含めないで集計 しますので、欠損値を確認したり、データ型を変えたり、結構、手間がかかります。 また、一気に、比率を求めてしまう方法として、データフレームの各行に対して関数を適用する「 apply 」と1行で記載できる関数を定義する「 lambda 」を組み合わせることも身に付けていきましょう。 76 データ名[データ名.isna().any(axis=1)] 77  データ名.replace(“元の要素”, “新しい要素”) 78  データ名.apply(関数, axis=1) 79  lambda 引数:処理内容 まとめとして、データを「見える化」するための「 グラフ・集計表の目的別手法 」も掲載しました。復習の意味で、参考にしてください。 ■ まずは、概要を理解したい方は、下記の 動画 (15分31秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 28 ピボットテーブル(2) by @Cat_Taro

#29 Section 27 ピボットテーブル(1)

イメージ
データを可視化する方法は、グラフだけではありません。 2つのカテゴリのデータを同時に集計した結果を示す表を クロス集計表 と言いますが、このクロス集計表によって、様々な考察を得ることができます。 このセクションでは、クロス集計表を作成する ピボットテーブル を解説します。 75  pd.pivot_table(データ名, index=“列名1”, columns=“列名2”,             , values=“列名3”, aggfunc=’関数’, 他の引数) 75 のプログラムの引数を何度か他の列名と書き換えたり、省略したりして、ピボットテーブルによるクロス集計表の作り方を身に付けていきましょう。 ■ まずは、概要を理解したい方は、下記の 動画 (10分32秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 27 ピボットテーブル(1) by @Cat_Taro ■ 参考URL ●株式会社Spotの「 Pandasでピボットテーブルを手軽に作成するpivot_table関数の使い方 」 https://deepage.net/features/pandas-pivot.html

#28 Section 26 円グラフ

イメージ
このセクションでは、 円グラフ の描き方を解説します。 seaborn は、より美しく、より簡単にグラフ描画を実現してくれるライブラリですが、現時点では 円グラフを描く機能はありません 。しかし、日本ではプレゼン等で、市場シェアを円グラフで見せる機会が多いため、ここでは、「 Plotly 」というライブラリーを使います。 それらを実現するプログラムは下記の2つです。 73  import plotly.express as px 74  px.pie(データ名, values=“分類したい列名”, names=“値の列名”) ライブラリー「 Plotly 」は、円グラフを描くことができるだけでなく、 インタラクティブなグラフ を描けることが最大の特徴です。動画の後半で、そのインタラクティブ性を確認してみてください。 また、「 Dash 」 を使うと「Plotly」で可視化した インタラクティブなプロットをWeb上で操作 することができます。コラボを使わなくても、ホームページで「Plotly」を使うことができるというわけです。この解説は下記のURLを参照してください(英語ですが、頑張ってみてください)。 ■ まずは、概要を理解したい方は、下記の 動画 (8分9秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 26 円グラフ by @Cat_Taro ■ 参考URL ●様々な円グラフの描き方   【plotlyチュートリアル】 第4回円グラフ     https://cafe-mickey.com/python/plotly-tutorial-4/ ●「Plotly」全体の公式ドキュメント   Plotly Open Source Graphing Library for Python    https://plotly.com/python/

#27 Section 25 散布図

イメージ
このセクションでは、x軸、y軸の値のペアで1つの実数が決る2変数の 散布図 の描き方を習得していきます。 ヒストグラムは、単変数のデータの分布を見るために用いましたが、散布図は2つの変数の分布を見るために用います。その分布をみることによって、 相関の有無 を点の散らばりから確認することができます。また、大きく異なったデータ( 外れ値 ) の存在 を確認することもできます。 それらを実現するプログラムは下記の3つです。 70   sns.scatterplot(data=データ名, x="列名1", y="列名2") 71  sns.scatterplot(data=データ名, x="列名1", y="列名2“, hie=“列名3”) 72  plt.legend(loc=‘位置’) 散布図を描くための「 scatterplot 」は、「lineplot」、「histplot」、「catplot」、「countplot」と同様に、「 hue 」を使ってサブグループに分け、それらを色分けすることができます。  また、グラフの 凡例の位置 を指定するには、「plt.legend(loc=‘位置’)」を使います。これは、他のグラフ描画のプログラムでも使えます。  ■ まずは、概要を理解したい方は、下記の 動画 (6分57秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 25 散布図 by @Cat_Taro ■ 凡例をグラフ外に表示したり、フォントの変更等を詳しく知りたい場合は、「Pythonアカデミー」の下記のページを参考にしてください。 【matplotlib】凡例(legend)を表示する方法【位置変更、フォント変更、サイズ変更】  https://python-academia.com/matplotlib-legend/  

医療ビッグデータ企業の過去・現在・未来 

イメージ
昨日 ポストした 医療ビッグデータ企業M&Aの記事の熱量が後を引いています…。チュートリアルの完成を急がなくてはならないのですが、 日本で企業が活用できる医療ビッグデータは、日本薬剤疫学会の健康・医療情報データベース活用委員会が毎年更新している「 日本で薬剤疫学研究に利用可能なデータベース 」で知ることができます。 なお、「日本で薬剤疫学研究に利用可能なデータベース」の分類は、下記の3つに分かれていますが、これは、データ収集元で分類しています。 例えば、「保険者ベース」は健康保険組合から、「医療機関ベース」は医療機関、「保険薬局ベース」は調剤薬局からデータの提供を受けています。 さて、最新のもので、昨日ポストした JMDC、メディカル・データ・ビジョン等の 医療ビッグデータ企業のデータベースを見てみましょう。 1.保険者ベース 総登録者数では JMDC が1位で、1,400万人。しかも、データ期間が2005年からと断トツで長期で、8年以上追跡可能な患者数が135万人と明記されていることから、データの質が良いことが推察されます。 2.医療機関ベース  総登録者数では、 MDV が1位で、4,042万人。JMDCは4位で1,700万人ですが、2,440万人の2位のリアルワールドデータ株式会社は2022年7月にJMDCの子会社になったので、単純に合計すると JMDCグループ が1位になります。 3.保険薬局ベース 総登録者数では、1位が外資の製薬企業サポート企業 IQVIA で、9,078万人。JMDCは4位で1,700万人と大分水をあけられているようです。 これは、医療ビッグデータ(「リアルワールドデータ/RWD」とも言います)の登場が、先ずは、保険者ベースのデータでJMDC、次いで保険薬局ベースのデータでJMIRI(現インテージグループ)、IMS(現IQVIA)、なかなかデータが集まらなくて普及に時間がかかりましたが、病院のDPCデータで メディカル・データ・ビジョンが登場したという歴史的背景が、未だに影響していると思います。下図を参照してください。 データビジネス は、収集に時間やコストがかかるため、 参入する企業が限られます 。また、一度参入した企業は、初期投資を回収するために自分の強みを活かさなくてはならないので、顧客(この場合は製薬企業)に ベンダーロ...

医療ビッグデータ 第2章はじまる

イメージ
異常な暑さに見舞われている今年の夏。 医療ビッグデータ企業にも熱い動きが続出しています。 猫のタローが育った医療ビッグデータの業界、思い入れ深く、つぶやきます。 ************ ************ ◆8月25日  SBIホールディングス が メディカル・データ・ビジョン (MDV)株を追加取得(議決権ベースで最大5.35%追加取得)と発表。 SBIホールディングスとMDVは 2020年11月10日 に資本業務提携契約を締結。2023年6月3日現在、MDVの株式を940万8814株(議決権比率 24.63%)保有していた。 https://www.mixonline.jp/tabid55.html?artid=75242 ************ ************ ◆9月6日  NTTドコモ が、 インテージホールディングス の連結子会社化を目的とした株式公開買付け(TOB)を実施すると発表。 2012年4月 には両社の合弁会社として株式会社ドコモ・インサイトマーケティング(以下「DIM」といいます。)を設立していた。 https://www.nihon-ma.co.jp/news/20230906_9432-20/ ************ ************ ◆9月8日  オムロン 、医療データサービスの JMDC をTOBで子会社化(取得価格は最大で855億円)。JMDCはTOBに賛同し、同社の東証プライム市場への上場は維持される。 オムロンは 2022年2月 にJMDCと資本業務提携。これに伴い、オムロンは1120億円を投じてノーリツ鋼機からJMDCの株式33%(当時)を取得し、持ち分法適用関連会社としていた。 https://maonline.jp/news/20230908e ************ ************ これらのM&Aの目的は、明確で、いずれも新たなサービスを生み出すためのものです。そのため、いきなりのM&Aではなく、事前の準備がありました。 SBIホールディングス と メディカル・データ・ビジョン は、 医療ビッグデータを活用した金融およびヘルスケア分野での新商品・サービス開発などの加速。 NTTドコモ と インテージホールディングス は、 インテージHDが培ってきたデータ集計・分析・可視化などのスキ...

#26 Section 24 折れ線グラフ

イメージ
seabornで 折れ線グラフ を描くには、「 lineplot 」を使います。「barplot」と同様に、各グループごとの平均値を自動的に算出してくれますので、平均値を求めた集計表を作らなくとも、いきなりグラフを描くことができます。 それらを実現するプログラムは下記の3つです。 66  sns.lineplot(data=データ名, x=“列名1”, y=“列名2") 67  sns.lineplot(data=データ名, x=“列名1”, y=“列名2“, errorbar=None) 68  plt.xticks(rotation=角度)  69  sns.lineplot(data=データ名, x=“列名1”, y=“列名2“, hue=“列名3”) また、グラフ関数を使う時には、慣れるまで、グラフ関数に含まれている集計機能を確認するようにしましょう。ここでは、「groupby」を使います。 「 groupby 」は、複数の列ごとにグルーピングすることもできます。これを用いて、年月ごとの各国の「Total」の平均値を求め、「hue」を使ったグラフがそれをプロットしていることを確認しています。 groupby([“列名1”, “列名2”])[[“列名3”]].mean( ) ●列名1、列名2は、グルーピングする列名 ●列名3には、計算対象の列名 ■ まずは、概要を理解したい方は、下記の 動画 (8分39秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 24 折れ線グラフ by @Cat_Taro

# 25 Section 23 棒グラフ

イメージ
seabornで棒グラフを描くためには、 データの平均値のグラフ を描く「 barplot 」と データの個数のグラフ を描く「 countplot 」があります。 それらを実現するプログラムは下記の3つです。 【再掲】 ㊱ sns.barplot(data=データ名, x=“列名1”, y=“列名2”) 64 sns.barplot(data=データ名, x=“列名1”, y=“列名2”, 引数) 64’  横向きの棒グラフ        sns.barplot(data=データ名, x=“列名2”, y=“列名1”, 引数)  65 sns.countplot(data=データ名, x=“列名1”, y=“列名2”) 「barplot」は平均値のグラフですので、 信頼区間の幅 を表す エラーバー(error bar) を使い、平均値のばらつきを示す方法も身に付けていきましょう。 ■ 参考URL ●matplotlibの色指定の方法(再掲)   https://matplotlib.org/2.0.2/examples/color/named_colors.html ■ まずは、概要を理解したい方は、下記の 動画 (9分21秒)をご覧ください。 ■ PowerPoint(パワポ) でじっくりと理解したい方は、 下記のスライドを参照してください 。 Section 23 棒グラフ by @lou66jp

#24 Section 22 ヒストグラム(2)

イメージ
前のセクションで用いた histplot のバリエーション、そして displot 、 catplot を使った様々なヒストグラムの描き方を習得していきましょう。 少し高度なグラフですが、 カーネル密度推定 によるグラフ(ヒストグラムの滑らかなバージョン)、 経験的累積分布関数 によるグラフ(ヒストグラム以外のデータの分布を表すグラフ)も描くことを取得していきましょう。 それらを実現するプログラムは下記の6つです。 58  sns.histplot(data=データ名, x=“列名1”, hue=”列名2“  , multiple='stack’)  59  sns.histplot(data=データ名, x=“列名1”, hue=”列名2“  , multiple='dodge’) 60  sns.displot(data=データ名, x=“列名1”) 61  sns.displot(data=データ名, x=“列名1”, kde=True) 62  sns.displot(data=データ名, x=“列名1”, kind=‘ecdf’) 63  sns.catplot(data=データ名, x=“列名", kind='count’) ヒストグラムは、様々なプログラムで描くことができます。これが、seabornの柔軟なところですが、逆にわかりにくいところでもあります。 このチュートリアルでは、histplot、displot、catplot毎に解説するのではなく、グラフの種類ごとに解説していきます。各グラフ毎に、自分に合った一つのプログラムを選択して身に付けていけば十分です。 ■ まずは、概要を理解したい方は、下記の 動画 (14分19秒)をご覧ください。   ■ PowerPoint(パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 22 ヒストグラム(2) by @Cat_Taro ■ 参考URL ●二次元ヒストグラムのイメージ  → HK29さんのブログ「PythonとVBAで世の中を便利にする」   https://hk29.hatenablog.jp/entry/2021/08/21/230609  ●経験的累積分布関数(ECDF)のグ...

#23 Section 21 ヒストグラム(1)

イメージ
さて、本セクションでは、Section 20で作成した「id_pos11」を使って、 ヒストグラム を描いていきます。 ヒストグラムとは、対象のデータを区間ごとに区切った 度数分布表 を、棒グラフに似た図で表現したグラフのことです。データの分布を見るために用いられます。 横軸(X軸)の数値を「 階級 」と呼び、データを区切った区間を表します。縦軸(Y軸)の数値は、「 度数 」と呼び、各区間に含まれるデータの数量を表します。 それらを実現するプログラムは下記の6つです。 52 sns.histplot(data=データ名, x=“列名")  53 sns.histplot(data=データ名1, x=“列名")     sns.histplot(data=データ名2, x=“列名")  54  color=‘色’ 55 plt.legend(labels=[“A", “B", “C"])  56  alpha=数字 57 sns.histplot(data=データ名, x=“列名1”, hue=”列名2“)   ■ まずは、 概要を理解したい方は、下記の 動画 (9分30秒) をご覧ください。   ■ PowerPoint (パワポ) でじっくりと理解したい方は、 下記のスライドを参照してください。 Section 21 ヒストグラム(1) by @Cat_Taro ■ 参考URL ●seabornでは、matplotlibの色指定の方法を使います。詳細は、下記を参照してください。       https://matplotlib.org/2.0.2/examples/color/named_colors.html

#22 Section 20 グラフ用のデータを作る

イメージ
本セクションはでは、ビンのラベルを元のデータに付与して作った「id_pos7_2」を、seabornでグラフを描いた際に、影響力のある3カ国を選んで、結果がわかりやすいように、データを作っていきます。 1.「 groupby 」を用いて、国別にTotal(合計金額)を算出します。これは、㉖の応用ですね。 2.カンマに続けて「 sort_values 」を使い、 Totalが大きい順に並べ替えます。これは、⑰の応用ですね。 3.Section 10で解説した列の値に対する条件に応じて行を抽出する「query」を用いて、上位3カ国のデータのみを抽出します。         データ名.query('列名 == ["要素名1", "要素名2"]') 「㉔ データ名.query(“列名 == 列名”)」とは異なりますので、注意してください。 ■ まずは概要を理解したい!という方は、下記の 動画 (8分0秒) をご覧ください。    ■ PowerPoint でじっくり理解したい方は、右下のマーク「 ページを新しいウインドウで開きます。 」 をクリックしてください。 Section 20 グラフ用のデータを作る by @Cat_Taro

#21 Section 19 ビンのラベルを元のデータに付与する

イメージ
Section 18では、データの変数を分割する「 ビニング処理 」を解説しましたが、このセクションでは、 そのビン(分割区分)に付けたラベルを元データに付与する方法を解説します。 元データに、新たなデータ項目を追加することにより、分析の幅が広がりますので、今回のスキルをしっかりとマスターしましょう。このプログラムは、 機械学習 用のデータを作成するときにもよく使うものです。 それらを実現するプログラムは下記の2つです。 ㊾ 新データ名 = 元データ名.copy() ㊿ 新データ名[“新列名”] = pd.cut(元データ名[“列名”]         , [数字1, 数字2, 数字3]          , labels=[ラベル1, ラベル2, ラベル3] ) また、Pythonのプログラムを書く際に犯してしまうミスを警告してくれるコラボの機能「 SettingWithCopyWarning 」を体験し、それを防ぐ方法も身に付けていきましょう!  ■ まずは、 概要を理解したい方は、下記の 動画 (8分45秒) をご覧ください。 ■ PowerPoint (パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 19 ビンのラベルを元のデータに付与する by @Cat_Taro    ■ 参考URL ブログ「naoの学習&学習」の「【Pandas】 データフレームをコピーしたいときにcopy()を使う意味」のURLは下記のとおりです。 https://www.learning-nao.com/?p=2384

#20 Section 18 データを分割するビニング

イメージ
Section 17では、データに含まれていた時間の「ドリルダウン」、すなわち「年」から「年月」への「ドリルダウン」を行いましたが、このセクションでは、「 ドリルダウン 」するための数値を新たに作っていきます。 「商品」に属する「UnitPrice(単価)」を、顧客の特徴をよく表すように分割(これを「 ビニング 」と言います)する方法を身に付けましょう。 それらを実現するプログラムは下記の7つです。 ㊺ pd.cut( データ名[“列名”], 分割数, precision=□, right=True ) ㊻ pd.cut( データ名[“列名”], 分割数 ). value_counts() ㊼ pd.cut( データ名[“列名”], [数字1, 数字2, 数字3] ) ㊽ pd.cut( データ名[“列名”], [数字1, 数字2, 数字3]      , labels=[ラベル1, ラベル2, ラベル3] ) ■ まずは、 概要を理解したい方は、下記の 動画 (6分47秒) をご覧ください。   ■ PowerPo int (パワポ) でじっくりと理解したい方は、下記のスライドを参照してください。 Section 18 データを分割するビニング by @Cat_Taro   ■ 参考URL ●ビニングに関しては、Smart-Hintが運営している「データをビニング(ビン分割)する方法|cut」がとってもわかりやすかったので、参考にしてみてはいかがでしょうか。 https://smart-hint.com/python/cut/ ●フリーランスのサウンドクリエータ「パンダの中のパンダ」さんがやっている「【AIプログラミング】 ビニングでボストン住宅価格の回帰」が役に立つと思いますので、下記を参考にしてみてくださいね。 https://panda-clip.com/binnning-boston/

#19 Section 17 seabornでグラフ描画(2)

イメージ
それでは、データサイエンス・チュートリアル 第19回目、Section 17「seabornでグラフ描画(2)」を始めます。 このセクションでは、 OLAPキューブ の分析手法に従い、時間に関してドリルダウンを行い、データ分析を試みていきます。 また、それらの結果で説得力あるプレゼンをするために、 seaborn で作成したグラフを見栄えよくする方法を身に付けていきましょう。具体的には、seabornの日本語化、グラフの大きさを指定、軸の単位を整数にする、グラフをクールに表示する(ggplotライク)、グラフのタイトルを表示、 y軸の表示範囲を設定、グラフの画像を保存などを解説します。 Seabornの体裁を整えるプログラムを整理すると、下記のようになります。 今回、解説するプログラムは下記の7つです。あまり、応用することは無いので、そのまま覚えるか、コピペできるようにしておきましょう。   ㊳ !pip install japanize-matplotlib    import japanize_matplotlib  ㊴ plt.figure(figsize=(○, △), dpi=□)  ㊵ plt.gca().ticklabel_format(style='plain’,axis='y’)  ㊶ plt.style.use("ggplot")  ㊷ plt.title(“グラフタイトル")  ㊸ plt.ylim(最小値,最大値)  ㊹ from google.colab import files       plt.savefig(“画像ファイル名.jpg")       files.download("画像ファイル名.jpg") ■ まずは、 概要を理解したい方は、下記の 動画 (11分40秒) をご覧ください。 ■ PowerPoin t (パワポ) でじっくりと理解したい方は、右下のマーク「ページを新しいウインドウで開きます。」をクリックしてください。 Section 17 seabornでグラフ描画(2) by @Cat_Taro