<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pandas on 300.Watts</title><link>https://300watts.me/tags/pandas/</link><description>Recent content in Pandas on 300.Watts</description><generator>Hugo</generator><language>en</language><managingEditor>morristai01@gmail.com (Morris)</managingEditor><webMaster>morristai01@gmail.com (Morris)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Wed, 29 Aug 2018 11:47:17 +0800</lastBuildDate><atom:link href="https://300watts.me/tags/pandas/index.xml" rel="self" type="application/rss+xml"/><item><title>台電跳電分析</title><link>https://300watts.me/posts/%E5%8F%B0%E9%9B%BB%E8%B7%B3%E9%9B%BB%E5%88%86%E6%9E%90/</link><pubDate>Wed, 29 Aug 2018 11:47:17 +0800</pubDate><author>morristai01@gmail.com (Morris)</author><guid>https://300watts.me/posts/%E5%8F%B0%E9%9B%BB%E8%B7%B3%E9%9B%BB%E5%88%86%E6%9E%90/</guid><description>&lt;html&gt;

&lt;head&gt;
 &lt;meta charset="utf-8" /&gt;
&lt;/head&gt;

&lt;body&gt;
 &lt;li&gt;使用資料&lt;ol&gt;
 &lt;li&gt;台灣電力公司_近三年每日尖峰備轉容量率.csv (&lt;a href="http://data.gov.tw/node/25850"&gt;http://data.gov.tw/node/25850&lt;/a&gt;)&lt;/li&gt;
 &lt;li&gt;台灣電力公司_本年度每日尖峰備轉容量率.csv (&lt;a href="http://data.gov.tw/node/24945"&gt;http://data.gov.tw/node/24945&lt;/a&gt;)&lt;/li&gt;
 &lt;li&gt;台灣電力公司_過去電力供需資訊.csv (&lt;a href="https://data.gov.tw/dataset/19995"&gt;https://data.gov.tw/dataset/19995&lt;/a&gt;)
 &lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;div&gt;
 &lt;a href="https://plot.ly/~diaper151/2/?share_key=wRLOEfuZlw3zH4UXgiSYCb" target="_blank" title="台電備轉容量率"
 style="display: block; text-align: center;"&gt;&lt;img
 src="https://plot.ly/~diaper151/2.png?share_key=wRLOEfuZlw3zH4UXgiSYCb" alt="台電備轉容量率"
 style="max-width: 100%;width: 600px;" width="600"
 onerror="this.onerror=null;this.src='https://plot.ly/404.png';" /&gt;&lt;/a&gt;
 &lt;script data-plotly="diaper151:2" sharekey-plotly="wRLOEfuZlw3zH4UXgiSYCb" src="https://plot.ly/embed.js" async&gt;
 &lt;/script&gt;
 &lt;/div&gt;


 &lt;div&gt;
 &lt;a href="https://plot.ly/~diaper151/4/?share_key=2UdGALS1MIDbxdBFbFbWnM" target="_blank" title="工業用電+民生用電(百萬度)"
 style="display: block; text-align: center;"&gt;&lt;img
 src="https://plot.ly/~diaper151/4.png?share_key=2UdGALS1MIDbxdBFbFbWnM" alt="工業用電+民生用電(百萬度)"
 style="max-width: 100%;width: 600px;" width="600"
 onerror="this.onerror=null;this.src='https://plot.ly/404.png';" /&gt;&lt;/a&gt;
 &lt;script data-plotly="diaper151:4" sharekey-plotly="2UdGALS1MIDbxdBFbFbWnM" src="https://plot.ly/embed.js" async&gt;
 &lt;/script&gt;
 &lt;/div&gt;
 &lt;li&gt;觀察結果&lt;ol&gt;
 &lt;li&gt;首先台電並沒有提供跳電或停電紀錄，目前所知道最有可能導致跳電的數據為備轉容量(預留的發電量)，當被轉容量過低則可能導致供電不足。&lt;/li&gt;
 &lt;li&gt;新聞指出今年五月頻繁跳電(&lt;a href="http://www.storm.mg/article/477780"&gt;http://www.storm.mg/article/477780&lt;/a&gt;
 )，而五月也是備轉容量率低於10%累積天數之首。現在我們看看台電實際數據。&lt;/li&gt;
 &lt;li&gt;以歷年平均備轉容量率來看，2018為目前最低的年份(6%以下為供電警戒)，但是2018尚未結束，所以我們用時間圖表看過去同時期的情況。&lt;/li&gt;
 &lt;li&gt;從年初到現在的備轉容量率較往年偏低，所以如果去年前年都有跳電的紀錄，今年也有可能會跳電。&lt;/li&gt;
 &lt;li&gt;分析過往用電紀錄，可以看到10月初是整體耗電最凶的時候，如果不算計畫性工作停電的話，今年最有可能在10月發生跳電。&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
&lt;/body&gt;

&lt;/html&gt;</description></item><item><title>台灣社群年齡分布</title><link>https://300watts.me/posts/%E5%8F%B0%E7%81%A3%E7%A4%BE%E7%BE%A4%E5%B9%B4%E9%BD%A1%E5%88%86%E5%B8%83/</link><pubDate>Wed, 25 Jul 2018 11:52:49 +0800</pubDate><author>morristai01@gmail.com (Morris)</author><guid>https://300watts.me/posts/%E5%8F%B0%E7%81%A3%E7%A4%BE%E7%BE%A4%E5%B9%B4%E9%BD%A1%E5%88%86%E5%B8%83/</guid><description>&lt;html&gt;

&lt;head&gt;
 &lt;meta charset="utf-8" /&gt;
&lt;/head&gt;

&lt;body&gt;
 看到公開資料隨手來分析一下台灣社群年齡比例
 &lt;h3&gt;表格一為台灣各年齡層Facebook用戶數量&lt;/h3&gt;
 &lt;table class="dataframe" border="1"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;年齡&lt;/th&gt;
 &lt;th&gt;人數&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;13-17&lt;/td&gt;
 &lt;td&gt;2372779&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;18-24&lt;/td&gt;
 &lt;td&gt;4898337&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;25-34&lt;/td&gt;
 &lt;td&gt;3151068&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;35-44&lt;/td&gt;
 &lt;td&gt;2557531&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;45-54&lt;/td&gt;
 &lt;td&gt;1842607&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;55-64&lt;/td&gt;
 &lt;td&gt;759609&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;h3&gt;表格二為18-24歲用戶，2017年最常互動之媒體排行&lt;/h3&gt;
 &lt;table class="dataframe" border="1"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;粉絲頁名稱&lt;/th&gt;
 &lt;th&gt;不重複互動人數&lt;/th&gt;
 &lt;th&gt;18-24歲用戶佔該媒體總互動人口比例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;東森新聞&lt;/td&gt;
 &lt;td&gt;2114552&lt;/td&gt;
 &lt;td&gt;0.3068&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ETtoday新聞雲&lt;/td&gt;
 &lt;td&gt;1759703&lt;/td&gt;
 &lt;td&gt;0.3216&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ETtoday星光雲&lt;/td&gt;
 &lt;td&gt;1518584&lt;/td&gt;
 &lt;td&gt;0.3763&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;h3&gt;表格三為25-34歲用戶，2017年最常互動之媒體排行&lt;/h3&gt;
 &lt;table class="dataframe" border="1"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;粉絲頁名稱&lt;/th&gt;
 &lt;th&gt;不重複互動人數&lt;/th&gt;
 &lt;th&gt;25-34歲用戶佔該媒體總互動人口比例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;東森新聞&lt;/td&gt;
 &lt;td&gt;1278274&lt;/td&gt;
 &lt;td&gt;0.1855&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ETtoday新聞雲&lt;/td&gt;
 &lt;td&gt;1107137&lt;/td&gt;
 &lt;td&gt;0.2023&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;蘋果日報 台灣&lt;/td&gt;
 &lt;td&gt;1008543&lt;/td&gt;
 &lt;td&gt;0.2362&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;h3&gt;表格四為55-64歲用戶，2017年最常互動之媒體排行&lt;/h3&gt;
 &lt;table class="dataframe" border="1"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;粉絲頁名稱&lt;/th&gt;
 &lt;th&gt;不重複互動人數&lt;/th&gt;
 &lt;th&gt;55-64歲用戶佔該媒體總互動人口比例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;大紀元 epochtimes.com&lt;/td&gt;
 &lt;td&gt;150330&lt;/td&gt;
 &lt;td&gt;0.1979&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;東森新聞&lt;/td&gt;
 &lt;td&gt;99128&lt;/td&gt;
 &lt;td&gt;0.1305&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ETtoday新聞雲&lt;/td&gt;
 &lt;td&gt;81543&lt;/td&gt;
 &lt;td&gt;0.1073&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;p&gt;其中，互動表示Facebook用戶對該媒體粉絲專頁之貼文按讚、愛心、笑臉、憤怒、悲傷等表情符號，不重複互動人數代表每位用戶不論與該媒體多少篇貼文互動，都僅統計為1不重複互動人數。&lt;/p&gt;
 &lt;p&gt;以表格三25-34歲台灣Facebook使用者最愛媒體中東森新聞為例，代表在2017年東森新聞發出的全部貼文中，共有1278274位屬於25-34歲之用戶與這些貼文互動。&lt;/p&gt;
 &lt;p&gt;並且25-34歲人口佔所有與東森新聞互動者中的18.55%，(即25-34歲用戶佔該媒體總互動人口比例一欄)。&lt;/p&gt;

 &lt;div&gt;
 &lt;a href="https://plot.ly/~diaper151/6/?share_key=DWRTwO60HJArmCCzFk2K9t" target="_blank" title="台灣臉書年齡分布"
 style="display: block; text-align: center;"&gt;&lt;img
 src="https://plot.ly/~diaper151/6.png?share_key=DWRTwO60HJArmCCzFk2K9t" alt="台灣臉書年齡分布"
 style="max-width: 100%;width: 600px;" width="600"
 onerror="this.onerror=null;this.src='https://plot.ly/404.png';" /&gt;&lt;/a&gt;
 &lt;script data-plotly="diaper151:6" sharekey-plotly="DWRTwO60HJArmCCzFk2K9t" src="https://plot.ly/embed.js" async&gt;
 &lt;/script&gt;
 &lt;/div&gt;

 &lt;table class="dataframe" border="1"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;年齡&lt;/th&gt;
 &lt;th&gt;東森新聞(%)&lt;/th&gt;
 &lt;th&gt;ETtoday新聞雲(%)&lt;/th&gt;
 &lt;th&gt;東森新聞(人數)&lt;/th&gt;
 &lt;th&gt;ETtoday新聞雲(人數)&lt;/th&gt;
 &lt;th&gt;東森新聞佔使用者比例&lt;/th&gt;
 &lt;th&gt;ETtoday新聞雲佔使用者比例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;18-24&lt;/td&gt;
 &lt;td&gt;0.3068&lt;/td&gt;
 &lt;td&gt;0.3216&lt;/td&gt;
 &lt;td&gt;2114552&lt;/td&gt;
 &lt;td&gt;1759703&lt;/td&gt;
 &lt;td&gt;0.431688&lt;/td&gt;
 &lt;td&gt;0.359245&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;25-34&lt;/td&gt;
 &lt;td&gt;0.1855&lt;/td&gt;
 &lt;td&gt;0.2023&lt;/td&gt;
 &lt;td&gt;1278274&lt;/td&gt;
 &lt;td&gt;1107137&lt;/td&gt;
 &lt;td&gt;0.405664&lt;/td&gt;
 &lt;td&gt;0.351353&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;55-64&lt;/td&gt;
 &lt;td&gt;0.1305&lt;/td&gt;
 &lt;td&gt;0.1073&lt;/td&gt;
 &lt;td&gt;99128&lt;/td&gt;
 &lt;td&gt;81543&lt;/td&gt;
 &lt;td&gt;0.130499&lt;/td&gt;
 &lt;td&gt;0.107349&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;其他&lt;/td&gt;
 &lt;td&gt;0.3772&lt;/td&gt;
 &lt;td&gt;0.3688&lt;/td&gt;
 &lt;td&gt;3400327&lt;/td&gt;
 &lt;td&gt;2523330&lt;/td&gt;
 &lt;td&gt;NaN&lt;/td&gt;
 &lt;td&gt;NaN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;

 &lt;div&gt;
 &lt;a href="https://plot.ly/~diaper151/8/?share_key=9W7D4pjfpetLknbx1jrlYR" target="_blank" title="東森用戶年齡占比"
 style="display: block; text-align: center;"&gt;&lt;img
 src="https://plot.ly/~diaper151/8.png?share_key=9W7D4pjfpetLknbx1jrlYR" alt="東森用戶年齡占比"
 style="max-width: 100%;width: 600px;" width="600"
 onerror="this.onerror=null;this.src='https://plot.ly/404.png';" /&gt;&lt;/a&gt;
 &lt;script data-plotly="diaper151:8" sharekey-plotly="9W7D4pjfpetLknbx1jrlYR" src="https://plot.ly/embed.js" async&gt;
 &lt;/script&gt;
 &lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;</description></item><item><title>Pandas ufuncs小技巧</title><link>https://300watts.me/posts/pandas-ufuncs%E5%B0%8F%E6%8A%80%E5%B7%A7/</link><pubDate>Sat, 26 Aug 2017 11:16:25 +0800</pubDate><author>morristai01@gmail.com (Morris)</author><guid>https://300watts.me/posts/pandas-ufuncs%E5%B0%8F%E6%8A%80%E5%B7%A7/</guid><description>&lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;Pandas&lt;/code&gt;的&lt;code&gt;ufuncs&lt;/code&gt;為什麼比&lt;code&gt;apply command&lt;/code&gt;還建議使用?&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;Pandas 有一個&lt;code&gt;apply function&lt;/code&gt;讓你可以針對所有在column的值執行任何functions。注意apply只是比python內建的loop還要快一點點而已！這就是為什麼pandas的內建ufuncs比較推薦使用在columns的預處理(preprocessing)。&lt;br&gt;
&lt;code&gt;ufuncs&lt;/code&gt;是特殊functions(建構在numpy的library)裡面並由&lt;strong&gt;C&lt;/strong&gt;來實行，這就是為何&lt;code&gt;ufuncs&lt;/code&gt;會如此之快。以下會介紹幾種&lt;code&gt;ufuncs&lt;/code&gt;的例子&lt;code&gt;(.diff, .shift, .cumsum, .cumcount, .str commands (作用在字串), .dt commands (作用在日期))&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="範例數據--暑期活動" class="headerLink"&gt;
 &lt;a href="#%e7%af%84%e4%be%8b%e6%95%b8%e6%93%9a--%e6%9a%91%e6%9c%9f%e6%b4%bb%e5%8b%95" class="header-mark"&gt;&lt;/a&gt;範例數據 — 暑期活動&lt;/h2&gt;&lt;p&gt;這裡透過下面的數據集來演示pandas的ufuncs(同一個人可以在不同的時間軸上進行不同的活動)
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_1.jpeg' alt="pandas_ufuncs_dataset" &gt;&lt;/p&gt;
&lt;p&gt;這裏假設我們的任務是要基於上面的數據集去預測&lt;strong&gt;誰是最有趣的同學&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="1-string-commands" class="headerLink"&gt;
 &lt;a href="#1-string-commands" class="header-mark"&gt;&lt;/a&gt;1. String commands&lt;/h2&gt;&lt;p&gt;&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_2.jpeg' alt="pandas_ufuncs_dataset" &gt;
如果我們想要對字串做切割的話，string commands (which are Ufuncs)是最推薦的：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;expand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_3.jpeg' alt="pandas_ufuncs_dataset" &gt;
除此之外你可以用&lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.replace.html" target="_blank" rel="noopener noreferrer"&gt;pandas.Series.str.replace&lt;/a&gt;來更有效的清理字串。&lt;/p&gt;
&lt;h2 id="2-group-by-and-value_counts" class="headerLink"&gt;
 &lt;a href="#2-group-by-and-value_counts" class="header-mark"&gt;&lt;/a&gt;2. Group by and value_counts&lt;/h2&gt;&lt;p&gt;透過&lt;code&gt;groupby&lt;/code&gt;和&lt;code&gt;value_counts&lt;/code&gt;我們可以輕鬆數出每個人做過多少次活動：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;activity&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value_counts&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_4.jpeg' alt="pandas_ufuncs_dataset" &gt;
這稱為&lt;a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html" target="_blank" rel="noopener noreferrer"&gt;multi index&lt;/a&gt;，它可以讓我們同時在dataframe中擁有不同的index層，在圖片中人名就是level 0而activity是level 1。&lt;/p&gt;
&lt;h2 id="3-unstack" class="headerLink"&gt;
 &lt;a href="#3-unstack" class="header-mark"&gt;&lt;/a&gt;3. Unstack&lt;/h2&gt;&lt;p&gt;我們也可以創建每個人的活動計數特徵，透過&lt;code&gt;unstack&lt;/code&gt;方法，可以將行與列互換，&lt;code&gt;unstack&lt;/code&gt;會把最低level的index轉換成cloumns，每個人的活動計數會變成cloumns，對於沒有從事該活動的人欄位會維持缺失值&lt;code&gt;NaN&lt;/code&gt;，可以對其進行缺失值填補。
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;activity&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value_counts&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unstack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fillna&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_5.jpeg' alt="pandas_ufuncs_dataset" &gt;&lt;/p&gt;
&lt;h2 id="4-groupby-diff-shift-and-loc--a-great-tip-for-efficiency" class="headerLink"&gt;
 &lt;a href="#4-groupby-diff-shift-and-loc--a-great-tip-for-efficiency" class="header-mark"&gt;&lt;/a&gt;4. groupby, diff, shift, and loc + A great tip for efficiency&lt;/h2&gt;&lt;p&gt;如果能了解一個人在活動中從事的時間，必定能對我們了解誰是最有趣的人有幫助。誰在party待最久？誰在海邊待最久？
對於時間長短最有效的推算方式就是先使用&lt;code&gt;groupby&lt;/code&gt;歸類人名，再用&lt;code&gt;diff()&lt;/code&gt;算出時間差:
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timestamp&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;time_diff&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timestamp&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;diff&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_6.jpeg' alt="pandas_ufuncs_dataset" &gt;
如果你有大量的數據集，你可以跳過&lt;code&gt;groupby&lt;/code&gt;，只做資料排序，刪除每個人的第一行(不相關的)後直接用&lt;code&gt;diff&lt;/code&gt;。
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timestamp&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;time_diff&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;timestamp&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;diff&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;time_diff&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
順便一提 ⎯ &lt;code&gt;.shift&lt;/code&gt;可以將每一行向下移動ㄧ格，所以我們就可以用&lt;code&gt;df.name!=df.name.shift()&lt;/code&gt;看看哪一行有改變。
然後&lt;code&gt;.loc&lt;/code&gt;是最推薦用來在特定的indices的columns中set values的選擇！&lt;br&gt;
接著我們把&lt;code&gt;time_diff&lt;/code&gt;單位改成秒：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;time_diff&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time_diff&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_seconds&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
獲取每個row的持續時間：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;row_duration&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time_diff&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img class="tw-inline" loading="lazy" src='https://300watts.me/images/pandas_ufuncs_7.jpeg' alt="pandas_ufuncs_dataset" &gt;&lt;/p&gt;</description></item><item><title>Pandas cut與qcut函數</title><link>https://300watts.me/posts/pandas-cut%E8%88%87qcut%E5%87%BD%E6%95%B8/</link><pubDate>Sat, 05 Aug 2017 11:46:56 +0800</pubDate><author>morristai01@gmail.com (Morris)</author><guid>https://300watts.me/posts/pandas-cut%E8%88%87qcut%E5%87%BD%E6%95%B8/</guid><description>&lt;p&gt;如果我們今天有一些連續性的數值，可以使用&lt;code&gt;cut&lt;/code&gt;及&lt;code&gt;qcut&lt;/code&gt;進行離散化。
&lt;code&gt;cut&lt;/code&gt;函数是利用數值區間將數值分類，&lt;code&gt;qcut&lt;/code&gt;則是用分位數。
換句話說，&lt;code&gt;cut&lt;/code&gt;用在長度相等的類別，&lt;code&gt;qcut&lt;/code&gt;用在大小相等的類別。&lt;/p&gt;
&lt;blockquote&gt;
 &lt;h2 id="cut函數" class="headerLink"&gt;
 &lt;a href="#cut%e5%87%bd%e6%95%b8" class="header-mark"&gt;&lt;/a&gt;cut函數&lt;/h2&gt;
&lt;/blockquote&gt;&lt;p&gt;假設我們有一些人的年齡&lt;br&gt;
&lt;strong&gt;ages&lt;/strong&gt; = &lt;code&gt;[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32, 101]&lt;/code&gt;&lt;br&gt;
我們如果想要離散化這些數列，分成“18到25”、“25到35”、“35到60”以及“60以上”，可以使用&lt;code&gt;cut&lt;/code&gt;函數
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;bins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bins&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Categories&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
第一個list是指每個年齡分別在哪個範圍內，如果超出了就變成&lt;code&gt;NaN&lt;/code&gt;缺失值，cats有兩個屬性：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;labels&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;int8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
我們也可以賦予範圍標籤，比如：
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;group_names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Youth&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;YoungAdult&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;MiddleAged&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Senior&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bins&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;labels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;group_names&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Youth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Youth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Youth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;YoungAdult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Youth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Senior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MiddleAged&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MiddleAged&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;YoungAdult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Categories&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;MiddleAged&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Senior&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;YoungAdult&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Youth&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;blockquote&gt;
 &lt;h2 id="qcut函數" class="headerLink"&gt;
 &lt;a href="#qcut%e5%87%bd%e6%95%b8" class="header-mark"&gt;&lt;/a&gt;qcut函數&lt;/h2&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;randn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#高斯分佈&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;qcut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#按四分位數分類，也可以用[0, .25, .5, .75, 1.]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.928&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.928&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.949&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.928&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="n"&gt;Categories&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.949&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.928&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value_counts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#計算每個區間的數值個數&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;3.928&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.624&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0144&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.949&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.691&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;int64&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
會發現&lt;code&gt;qcut&lt;/code&gt;把所有數值平均分配了，當然如果不想用四分位的話還可以自行輸入list，只要範圍介在0~1，例如&lt;code&gt;[0, 0.1, 0.5, 0.9, 1.]&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>