<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on KANIKIG BLOG</title>
    <link>https://blog.kanikig.xyz/tags/Python/</link>
    <description>Recent content in Python on KANIKIG BLOG</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 04 Apr 2022 14:22:56 +0000</lastBuildDate><atom:link href="https://blog.kanikig.xyz/tags/Python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>懒人技巧-模型训练完成时发通知到手机</title>
      <link>https://blog.kanikig.xyz/%E6%87%92%E4%BA%BA%E6%8A%80%E5%B7%A7-%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83%E5%AE%8C%E6%88%90%E6%97%B6%E5%8F%91%E9%80%9A%E7%9F%A5%E5%88%B0%E6%89%8B%E6%9C%BA/</link>
      <pubDate>Mon, 04 Apr 2022 14:22:56 +0000</pubDate>
      
      <guid>https://blog.kanikig.xyz/%E6%87%92%E4%BA%BA%E6%8A%80%E5%B7%A7-%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83%E5%AE%8C%E6%88%90%E6%97%B6%E5%8F%91%E9%80%9A%E7%9F%A5%E5%88%B0%E6%89%8B%E6%9C%BA/</guid>
      <description>前言 现在进行大型数值计算，或训练机器学习模型的时间可以长达数十小时甚至数天。我们自然是希望跑完的时候能够收到通知，这样就不用反复上去查看了。</description>
      <content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>现在进行大型数值计算，或训练机器学习模型的时间可以长达数十小时甚至数天。我们自然是希望跑完的时候能够收到通知，这样就不用反复上去查看了。</p>
<p>查了下网上居然相关教程非常少，本文提供<code>bark</code>和<code>wxpusher</code>两个免费推送服务的使用方法，实现脚本跑完时自动发通知到手机或微信。</p>
<h2 id="bark">bark</h2>
<p><a href="https://github.com/Finb/Bark">bark</a>是一款开源免费的推送服务，仅支持<code>ios</code>。</p>
<h3 id="下载安装">下载安装</h3>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2022/04/04/iShot2022-04-04-15.14.24.png" alt="iShot2022-04-04 15.14.24"  /></p>
<p>进入app后复制如上图的链接即可</p>
<h3 id="python调用">python调用</h3>
<p>首先需要requests包</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span></code></pre></div><p>在模型训练的代码块后面加上这行</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">ret</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;https://api.day.app/8BZtwxVav***********/报警滴滴滴/测试消息&#39;</span><span class="p">)</span>
</span></span></code></pre></div><p>上面链接换成你自己的，内容可以自己修改。</p>
<p>程序运行到这行就会发送通知到你的手机了。</p>
<h2 id="wxpusher">wxpusher</h2>
<p>如果是安卓手机，可以用<a href="https://wxpusher.zjiecode.com/admin/login">wxpusher</a>推送消息到微信，目前完全免费。类似的比较有名的server酱现在每天仅提供5次免费推送，不建议使用。</p>
<h3 id="创建应用">创建应用</h3>
<p>微信扫码自动注册，很方便。进去后创建应用，只要填必填项就可以，创建完成后会给你一个appToken，务必保存好。格式形如</p>
<pre tabindex="0"><code>AT_yn7Xsvz**********
</code></pre><p>应用创建完成后会显示一个二维码，一样用微信扫一下，你与应用就关联上了。然后点击左侧用户列表，复制你的UID</p>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2022/04/04/iShot2022-04-04-14.57.23.png" alt="iShot2022-04-04 14.57.23"  /></p>
<p>格式形如</p>
<pre tabindex="0"><code>UID_VO8eFt***********
</code></pre><h3 id="python调用-1">python调用</h3>
<p>相比于上面的<code>bark</code>，微信接口有一些限制，需要用<code>json</code>格式传输。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">json</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># wxpusher</span>
</span></span><span class="line"><span class="cl"><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;content-type&#39;</span><span class="p">:</span> <span class="s2">&#34;application/json&#34;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="n">body</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;appToken&#34;</span><span class="p">:</span><span class="s2">&#34;AT_yn7Xsvz**********&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;content&#34;</span><span class="p">:</span><span class="s2">&#34;这是一条测试消息&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;summary&#34;</span><span class="p">:</span><span class="s2">&#34;报警滴滴滴&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;contentType&#34;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;topicIds&#34;</span><span class="p">:[],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;uids&#34;</span><span class="p">:[</span><span class="s2">&#34;UID_VO8eFt***********&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>把<code>appToken</code>和<code>uids</code>替换成你的就可以了。</p>
<p>在模型训练的代码块后面加上</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">ret</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s1">&#39;http://wxpusher.zjiecode.com/api/send/message&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">body</span><span class="p">),</span> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">)</span>
</span></span></code></pre></div><p>这样跑完的时候就会<code>post</code>请求到api，即时发送通知到你的微信了。</p>
<h2 id="最终效果">最终效果</h2>
<p>非常快，基本上一执行就立刻接到通知了。</p>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2022/04/04/IMG_1722.jpg" alt="IMG_1722"  /></p>
<p>唯一美中不足的就是<code>wxpusher</code>受微信官方一些限制，通知没法直接显示内容，需要点进去才能查看。</p>
<h2 id="进阶">进阶</h2>
<ol>
<li>不仅适用于模型训练，可以用于任何长时间运行的程序</li>
<li>可以开发更多用法，例如程序运行时抛出异常，发通知。</li>
<li>本文仅给出python示例，如果是matlab可以<a href="https://ww2.mathworks.cn/help/matlab/ref/matlab.net.http.requestmessage-class.html">参考这里</a>，其他脚本语言也可以，只要能发送http请求。</li>
</ol>
]]></content:encoded>
    </item>
    
    <item>
      <title>pandas笔记</title>
      <link>https://blog.kanikig.xyz/pandas%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Tue, 17 Aug 2021 18:32:08 +0000</pubDate>
      
      <guid>https://blog.kanikig.xyz/pandas%E7%AC%94%E8%AE%B0/</guid>
      <description>https://www.youtube.com/watch?v=yzIMircGU5I&amp;amp;list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5U3u9y&amp;amp;index=1 read a tabular data file cols = [&amp;#39;col1&amp;#39;, &amp;#39;col2&amp;#39;] pd.read_table(path, sep=&amp;#39;|&amp;#39;, headers=None, names=cols) pd.head() # first five rows commands end with parentheses df.describe() #show mean, std, max, min... rename columns df.rename(columns = {&amp;#39;old_col_name&amp;#39;:&amp;#39;new_col_name&amp;#39;}, inplace=True) cols = new_col_list df.columns = cols df.columns = df.columns.str.replace(&amp;#39; &amp;#39;, &amp;#39;_&amp;#39;) remove columns df.drop(&amp;#39;col&amp;#39;, axis=1, inplace=True) df.drop([rows], axis=0, inplace=True) sort df[&amp;#39;col&amp;#39;].sort_values(ascending=False) # series df.sort_values(&amp;#39;col&amp;#39;) # return dataframe df.sort_values([&amp;#39;col1&amp;#39;, &amp;#39;col2&amp;#39;]) filter rows of a pandas DataFrame</description>
      <content:encoded><![CDATA[<blockquote>
<p><a href="https://www.youtube.com/watch?v=yzIMircGU5I&amp;list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5U3u9y&amp;index=1">https://www.youtube.com/watch?v=yzIMircGU5I&amp;list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5U3u9y&amp;index=1</a></p>
</blockquote>
<h2 id="read-a-tabular-data-file">read a tabular data file</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">cols</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s1">&#39;|&#39;</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">names</span><span class="o">=</span><span class="n">cols</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>	<span class="c1"># first five rows</span>
</span></span></code></pre></div><h2 id="commands-end-with-parentheses">commands end with parentheses</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span>	<span class="c1">#show mean, std, max, min...</span>
</span></span></code></pre></div><h2 id="rename-columns">rename columns</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;old_col_name&#39;</span><span class="p">:</span><span class="s1">&#39;new_col_name&#39;</span><span class="p">},</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">cols</span> <span class="o">=</span> <span class="n">new_col_list</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="n">cols</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="s1">&#39;_&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="remove-columns">remove columns</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s1">&#39;col&#39;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="n">rows</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="sort">sort</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">ascending</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>	<span class="c1"># series</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s1">&#39;col&#39;</span><span class="p">)</span>	<span class="c1"># return dataframe</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">sort_values</span><span class="p">([</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">])</span>	
</span></span></code></pre></div><h2 id="filter-rows-of-a-pandas-dataframe">filter rows of a pandas DataFrame</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">([])</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">200</span><span class="p">]</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1">#	df[df[&#39;col&#39;] &gt;= 200][&#39;col2&#39;]</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">200</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">]</span>	<span class="c1">#	loc select cols or rows with labels</span>
</span></span></code></pre></div><h2 id="multiple-filter-criteria">multiple filter criteria</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mi">200</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;a&#39;</span><span class="p">)]</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">isin</span><span class="p">([</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="s1">&#39;c&#39;</span><span class="p">])</span>
</span></span></code></pre></div><h2 id="read-two-columns">read two columns</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">usecols</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">])</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">nrows</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="iteration">iteration</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]:</span>
</span></span><span class="line"><span class="cl">	<span class="nb">print</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">  <span class="nb">print</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;a&#39;</span><span class="p">],</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;b&#39;</span><span class="p">])</span>
</span></span></code></pre></div><h2 id="filter-numerical-columns">filter numerical columns</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">select_dtypes</span><span class="p">(</span><span class="n">include</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">number</span><span class="p">])</span><span class="o">.</span><span class="n">dtypes</span>
</span></span></code></pre></div><h2 id="describe-method">describe method</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">describe</span><span class="p">(</span><span class="n">include</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;object&#39;</span><span class="p">,</span> <span class="s1">&#39;float64&#39;</span><span class="p">])</span>
</span></span></code></pre></div><h2 id="axis-parameter">&ldquo;axis&rdquo; parameter</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>	<span class="c1"># mean value for serires</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>	<span class="c1"># row mean</span>
</span></span></code></pre></div><h2 id="string-methods">string methods</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>	<span class="c1"># uppercase </span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="s1">&#39;str&#39;</span><span class="p">)</span>	<span class="c1">#	return series of t/f</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="s1">&#39;str&#39;</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;c&#39;</span><span class="p">,</span> <span class="s1">&#39;d&#39;</span><span class="p">)</span>	<span class="c1"># support regex</span>
</span></span></code></pre></div><h2 id="change-the-data-type">change the data type</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">dtypes</span>
</span></span><span class="line"><span class="cl"><span class="n">serires</span><span class="o">.</span><span class="n">dtype</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">&#39;float64&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;col1&#39;</span><span class="p">:</span><span class="nb">float</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;$&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</span></span></code></pre></div><h2 id="groupby">groupby</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;col1&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;col1&#39;</span><span class="p">)[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;col1&#39;</span><span class="p">)[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">agg</span><span class="p">([</span><span class="s1">&#39;count&#39;</span><span class="p">,</span> <span class="s1">&#39;min&#39;</span><span class="p">,</span> <span class="s1">&#39;max&#39;</span><span class="p">,</span> <span class="s1">&#39;mean&#39;</span><span class="p">])</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;col1&#39;</span><span class="p">)[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s1">&#39;bar&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="pandas-series">pandas Series</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">(</span><span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">nunique</span><span class="p">()</span>	<span class="c1"># number of unique values</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">crosstab</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">],</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col2&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s1">&#39;hist&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="handle-missing-values">handle missing values</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">tail</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="s1">&#39;any&#39;</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>	<span class="c1"># drop a row if it contains null</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">subset</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">],</span> <span class="n">how</span><span class="o">=</span><span class="s1">&#39;any&#39;</span><span class="p">)</span>	<span class="c1"># drop a row if col1 or col2 is null</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">(</span><span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="s1">&#39;A&#39;</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="pandas-index">pandas index</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">index</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">columns</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">shape</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="mi">23</span><span class="p">,</span> <span class="s1">&#39;a&#39;</span><span class="p">]</span>	<span class="c1">#	fetch value</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">decribe</span><span class="p">()</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="s1">&#39;25%&#39;</span><span class="p">,</span> <span class="s1">&#39;col&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="n">Series</span><span class="p">,</span> <span class="n">inplace</span><span class="o">-</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()[</span><span class="s1">&#39;value1&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span><span class="o">.</span><span class="n">sort_values</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span><span class="o">.</span><span class="n">sort_index</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">value</span> <span class="n">array</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="n">indices</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="select-multiple-rows-and-columns">select multiple rows and columns</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span> <span class="n">col_name</span><span class="p">]</span>	<span class="c1"># by label</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">]]</span>	<span class="c1"># by indices</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">index_col</span><span class="o">=</span><span class="s1">&#39;col1&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="s1">&#39;row_label&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>	<span class="c1"># mix labels and indices (not recommend)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;col_label&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">:</span><span class="s1">&#39;col3&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
</span></span></code></pre></div><h2 id="make-dataframe-smaller-and-faster">make DataFrame smaller and faster</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">memory_usage</span><span class="p">(</span><span class="n">deep</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">&#39;category&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s1">&#39;category&#39;</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;good&#39;</span><span class="p">,</span> <span class="s1">&#39;veray good&#39;</span><span class="p">,</span> <span class="s1">&#39;excellent&#39;</span><span class="p">,</span> <span class="n">ordered</span><span class="o">=</span><span class="kc">True</span><span class="p">])</span>
</span></span></code></pre></div><h2 id="pandas-with-scikit-learn">pandas with scikit-learn</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s1">&#39;id&#39;</span><span class="p">:</span><span class="n">array1</span><span class="p">,</span> <span class="s1">&#39;col&#39;</span><span class="p">:</span><span class="n">array2</span><span class="p">})</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s1">&#39;1.csv&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">to_pickle</span><span class="p">(</span><span class="s1">&#39;1.pkl&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">read_pickle</span><span class="p">(</span><span class="s1">&#39;1.pkl&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="loc-and-iloc">loc and iloc</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span> <span class="p">:]</span>	<span class="c1">#	inclusive-label</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span> <span class="p">:]</span>	<span class="c1"># exclusive-index</span>
</span></span></code></pre></div><h2 id="large-csv">large csv</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">frac</span><span class="o">=</span><span class="mf">0.75</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">train</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">sample</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">test</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="o">~</span><span class="n">df</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">isin</span><span class="p">(</span><span class="n">train</span><span class="o">.</span><span class="n">index</span><span class="p">),</span> <span class="p">:]</span>
</span></span></code></pre></div><h2 id="dummy-variables">dummy variables</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;sex_male&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;sex&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">({</span><span class="s1">&#39;female&#39;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;male&#39;</span><span class="p">:</span><span class="mi">1</span><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">get_dummies</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;sex&#39;</span><span class="p">],</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;sex&#39;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="date-and-times">date and times</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">dt</span><span class="o">.</span><span class="n">weekday_name</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">dt</span><span class="o">.</span><span class="n">dayofyear</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="s1">&#39;1/1/1999&#39;</span><span class="p">),</span> <span class="p">:]</span>
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">-</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;time&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">min</span><span class="p">())</span><span class="o">.</span><span class="n">days</span>
</span></span></code></pre></div><h2 id="find-and-remove-duplicate-rows">find and remove duplicate rows</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">duplicated</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">df</span><span class="o">.</span><span class="n">duplicated</span><span class="p">(</span><span class="n">keep</span><span class="o">=</span><span class="s1">&#39;first&#39;</span><span class="p">),</span> <span class="p">:]</span>	<span class="c1">#	&#39;last&#39; False</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">duplicated</span><span class="p">(</span><span class="n">subset</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">])</span>
</span></span></code></pre></div><h2 id="avoid-a-settingwithcopywarning">avoid a SettingWithCopyWarning</h2>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2021/08/19/image-20210819221914496.png" alt="image-20210819221914496"  /></p>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2021/08/19/image-20210819222207602.png" alt="image-20210819222207602"  /></p>
<p>Not sure if it is a copy or a view.</p>
<h2 id="change-display-options">change display options</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s1">&#39;display.max_rows&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">reset_option</span><span class="p">(</span><span class="s1">&#39;display.max_rows&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s1">&#39;display.max_colwidth, None)</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s1">&#39;display.precision, 2)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;new_col&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="mi">1000</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s1">&#39;display.float_format&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="si">{:,}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="create-a-pandas-dataframe-from-another-object">create a pandas DataFrame from another object</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">s</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;c&#39;</span><span class="p">,</span> <span class="s1">&#39;d&#39;</span><span class="p">],</span> <span class="n">name</span><span class="o">=</span><span class="n">shape</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="apply-a-function-to-a-pandas-series-or-dataframe">apply a function to a pandas Series or DataFrame</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">function</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ceil</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="p">[</span><span class="s1">&#39;col1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;col2&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="multiindex">MultiIndex</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">ser</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">col3</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>	<span class="c1"># series with multiindex</span>
</span></span><span class="line"><span class="cl"><span class="n">ser</span><span class="o">.</span><span class="n">unstack</span><span class="p">()</span>	<span class="c1"># dataframe</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">pivot_table</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="s1">&#39;col2&#39;</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="s1">&#39;col3&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">set_index</span><span class="p">([</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="s1">&#39;col2&#39;</span><span class="p">],</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">df</span><span class="o">.</span><span class="n">sort_index</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="merge-dataframes">merge DataFrames</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">,</span> <span class="n">left_on</span><span class="o">=</span><span class="s1">&#39;col1&#39;</span><span class="p">,</span> <span class="n">right_on</span><span class="o">=</span><span class="s1">&#39;col2&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s1">&#39;inner&#39;</span><span class="p">)</span>	<span class="c1">#	outer left right</span>
</span></span></code></pre></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Python全栈学习笔记</title>
      <link>https://blog.kanikig.xyz/Python%E5%85%A8%E6%A0%88%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</link>
      <pubDate>Tue, 02 Feb 2021 15:34:12 +0000</pubDate>
      
      <guid>https://blog.kanikig.xyz/Python%E5%85%A8%E6%A0%88%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</guid>
      <description>课程介绍 阶段一：基础到高级 三个项目 ATM+购物车：面向过程 选课系统：面向对象 计算机病毒：程序、服务端、客户端 阶段二：商业项目 BBS 路飞学城 微信小</description>
      <content:encoded><![CDATA[<h2 id="课程介绍">课程介绍</h2>
<h3 id="阶段一基础到高级">阶段一：基础到高级</h3>
<p>三个项目</p>
<ul>
<li>ATM+购物车：面向过程</li>
<li>选课系统：面向对象</li>
<li>计算机病毒：程序、服务端、客户端</li>
</ul>
<h3 id="阶段二商业项目">阶段二：商业项目</h3>
<ul>
<li>BBS</li>
<li>路飞学城</li>
<li>微信小程序</li>
<li>爬虫</li>
<li>数据分析：金融量化交易</li>
<li>自动化运维：cmdb、代码发布</li>
<li>GO语言开发</li>
<li>人工智能方向</li>
</ul>
<h2 id="计算机">计算机</h2>
<h3 id="计算机五大组成">计算机五大组成</h3>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2021/02/04/dcc451da81cb39dbf8fed5fad5160924ab18305b.jpg" alt="dcc451da81cb39dbf8fed5fad5160924ab18305b.jpg"  /></p>
<ul>
<li>CPU中央处理器
<ul>
<li>控制器：控制所有其他组件</li>
<li>运算器：数学运算与逻辑运算</li>
</ul>
</li>
<li>存储器io设备：数据存取
<ul>
<li>内存：基于电，断电丢失数据，用于临时存取</li>
<li>外存：硬盘，基于磁，存取慢，永久保存</li>
</ul>
</li>
<li>输入设备：键盘鼠标</li>
<li>输出设备：显示器打印机</li>
</ul>
<h3 id="操作系统">操作系统</h3>
<h4 id="概念">概念</h4>
<ul>
<li>控制计算机硬件</li>
<li>硬件的复杂操作封装</li>
</ul>
<p>软件</p>
<ul>
<li>应用软件</li>
<li>系统软件</li>
</ul>
<h4 id="计算机体系三层结构">计算机体系三层结构</h4>
<ul>
<li>应用程序</li>
<li>操作系统</li>
<li>计算机硬件</li>
</ul>
<h4 id="平台与跨平台">平台与跨平台</h4>
<p>平台：</p>
<ul>
<li>操作系统</li>
<li>计算机硬件</li>
</ul>
<h3 id="其他">其他</h3>
<h4 id="程序与三大核心硬件">程序与三大核心硬件</h4>
<p>程序:硬盘-&gt;内存</p>
<p>cpu从内存读取指令执行</p>
<h4 id="cpu详解">cpu详解</h4>
<h5 id="cpu分类与指令集">cpu分类与指令集</h5>
<ul>
<li>X86-32bit：intel</li>
<li>x86-64bit：AMD</li>
</ul>
<p><em>指令集</em>，就是CPU中用来计算和控制计算机系统的一套指令的集合</p>
<ul>
<li>精简指令集RISC：指令短，稳定</li>
<li>复杂指令集CISC：指令长，丰富</li>
</ul>
<h5 id="x86-64">X86-64</h5>
<ul>
<li>
<p>x86：intel发明世界第一个cpu8086，故将这种架构型号统称为x86。</p>
</li>
<li>
<p>64位：cpu能一次性从内存中取出多少位二进制指令。</p>
</li>
</ul>
<p>cpu有向下兼容性。</p>
<h5 id="寄存器">寄存器</h5>
<p>和cpu同材质，速度比内存快。存cpu要用的关键数据，提升CPU取数据的速度。</p>
<h5 id="内核态与用户态">内核态与用户态</h5>
<p>两种程序</p>
<ul>
<li>操作系统：内核态，调用控制硬件的指令集与运算指令集</li>
<li>应用程序：用户态，只调用运算相关指令集</li>
</ul>
<p>故两种状态频繁切换。</p>
<h5 id="多线程与多核芯片">多线程与多核芯片</h5>
<p>moore定律。</p>
<p>单核双线程，即一个cpu干两个cpu的工作，伪并行，假双核。</p>
<p>4核8线程：每个cpu2线程。</p>
<ul>
<li>intel：所有核调用一个L2缓存</li>
<li>AMD：每个核分配单独L2缓存</li>
</ul>
<h4 id="存储器io相关">存储器io相关</h4>
<ul>
<li>寄存器L1：32位32x32，64位64x64</li>
<li>高速缓存L2：cpu先在高速缓存找，高速缓存命中，未命中再找内存</li>
<li>内存</li>
<li>磁盘</li>
<li>磁带</li>
</ul>
<p>速度快-慢</p>
<h5 id="ram">RAM</h5>
<p>随机存取存储器</p>
<h5 id="rom">ROM</h5>
<p>只读内存，速度和内存一样。故一般用于出厂关键程序存储，例如BIOS</p>
<h5 id="cmos">CMOS</h5>
<p>也是易失性。速度慢。耗电极低。主板有个主板电池，给时钟芯片供电，计算后存到cmos</p>
<h5 id="磁盘结构">磁盘结构</h5>
<p><a href="https://pic.kanikig.xyz/image/YKcR">
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2021/02/04/v2-dc762f4e4037b261d0134171213c94a0_1440w.jpg" alt="v2-dc762f4e4037b261d0134171213c94a0_1440w.jpg"  /></a></p>
<p>硬盘：</p>
<ul>
<li>机械硬盘，即磁盘，依赖于机械转动。
<ul>
<li>磁道：一圈数据 bit（二进制位）-Byte（字节）-kB，实际上硬盘厂商是按1000记位</li>
<li>扇区：512字节，即硬盘一次性读写最小单位。操作系统一次读取一个block，即8个扇区=4096字节</li>
<li>柱面：相同半径的磁道叠在一起形成虚拟柱面</li>
<li>分区：即两个柱面之间的部分</li>
</ul>
</li>
<li>固态硬盘</li>
</ul>
<h5 id="io延迟">IO延迟</h5>
<p>硬盘读写速度很快，慢是在找数据的时间。</p>
<ul>
<li>平均寻道时间</li>
<li>平均延迟时间：最低为硬盘转半圈的时间</li>
</ul>
<p>io延迟为以上两者之和。</p>
<p>优化程序核心方法就是减少从硬盘读写，尽量从内存。</p>
<h5 id="虚拟内存swap">虚拟内存swap</h5>
<p>物理内存不足时在磁盘上划取。会带来io延迟。</p>
<h5 id="io设备">IO设备</h5>
<p>包含</p>
<ul>
<li>设备控制：驱动程序</li>
<li>设备本身</li>
</ul>
<h4 id="总线">总线</h4>
<p>连接主板上各组件交互。</p>
<p>
  <img loading="lazy" src="https://pic.kanikig.xyz/images/2021/02/04/t01696027505b77ec8c.jpg" alt="t01696027505b77ec8c.jpg"  /></p>
<ul>
<li>PCI桥：北桥，连接高速设备</li>
<li>ISA桥：南桥，连接慢速设备</li>
</ul>
<h4 id="操作系统启动流程">操作系统启动流程</h4>
<p>BIOS:  Basic Input Output System，出厂被写入ROM设备。</p>
<p>启动流程：</p>
<ol>
<li>计算机加电</li>
<li>BIOS运行监测硬件正常</li>
<li>BIOS读取CMOS存储器的参数，选择启动设备</li>
<li>从启动设备上读取第一个扇区的内容（MBR主引导记录512字节，前446位引导信息，后64为分区信息，最后两个为标志位）</li>
<li>根据分区信息读入BootLoader启动装载模块，启动操作系统</li>
<li>操作系统询问BIOS获得配置信息，加载驱动。</li>
</ol>
<h2 id="python入门">Python入门</h2>
<h3 id="编程语言介绍">编程语言介绍</h3>
<ol>
<li>机器语言</li>
<li>汇编语言</li>
<li>高级语言
<ol>
<li>编译型：c-&gt;gcc编译器-&gt;机器语言，执行效率高</li>
<li>解释型：py-&gt;字节码-&gt;解释器（一行一行）-&gt;机器，跨平台性强</li>
</ol>
</li>
</ol>
<h3 id="python介绍">python介绍</h3>
<ul>
<li>解释型</li>
<li>语法风格：PEP8规范</li>
</ul>
<h3 id="解释器">解释器</h3>
<p>解释器可以用任意语言写，CPython，Jpython。</p>
<p>2.6-2008</p>
<p>2.7-2010 后推出的过渡版本</p>
<p>3.0-2008</p>
<p>3.1-2009</p>
<p>3.2-2011</p>
<h3 id="运行python程序的两种方式">运行python程序的两种方式</h3>
<ul>
<li>交互式</li>
<li>脚本</li>
</ul>
<h3 id="程序运行三步骤">程序运行三步骤</h3>
<ol>
<li>启动解释器</li>
<li>解释器读取py进内存</li>
<li>解释器解释执行</li>
</ol>
<h2 id="变量与基本数据类型">变量与基本数据类型</h2>
<h3 id="变量">变量</h3>
<h4 id="三大组成部分">三大组成部分</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">变量名</span> <span class="n">赋值符号</span> <span class="n">变量名</span>
</span></span></code></pre></div><h4 id="变量名">变量名</h4>
<p>推荐小写加下划线</p>
<h4 id="变量值三个特征">变量值三个特征</h4>
<ul>
<li>id：变量值的内存地址</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">id</span><span class="p">()</span>
</span></span></code></pre></div><ul>
<li>type</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">type</span><span class="p">()</span>
</span></span></code></pre></div><ul>
<li>value</li>
</ul>
<h4 id="可变与不可变类型">可变与不可变类型</h4>
<ul>
<li>可变类型：改value，内存地址id不变
<ul>
<li>set</li>
<li>list</li>
<li>dict</li>
</ul>
</li>
<li>不可变：改value，id也变
<ul>
<li>number</li>
<li>bool</li>
<li>string</li>
<li>tuple</li>
</ul>
</li>
</ul>
<h4 id="is与">is与==</h4>
<ul>
<li>is比较的是左右变量的内存地址是否相同</li>
<li>==比较变量值</li>
</ul>
<h4 id="小整数对象池">小整数对象池</h4>
<p>从解释器启动会在内存中事先申请一系列内存空间存放常用整数（-5, 256)</p>
<p>IDE的小整数池会更大。</p>
<h3 id="常量">常量</h3>
<p>python语法没有常量概念！</p>
<p>全大写代表常量，只是一种规范写法，实际还是变量。</p>
<h3 id="基本数据类型">基本数据类型</h3>
<h4 id="字符串">字符串</h4>
<p>单、双、三引号定义均可，嵌套时单双应相反，或转义</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;-&#39;</span> <span class="o">*</span> <span class="mi">10</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># -----------</span>
</span></span></code></pre></div><h4 id="列表">列表</h4>
<p>内存中存的是值的内存地址，不存值！</p>
<p>如果list2 = list1，即两者指向同一个堆，改变值，两个都会改。</p>
<p><strong>深浅拷贝</strong>：</p>
<ul>
<li>浅拷贝：将列表第一层内存地址拷贝，但若有可变类型，还是会连在一起</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">list2</span> <span class="o">=</span> <span class="n">list1</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span></span></code></pre></div><ul>
<li>深拷贝：完全独立拷贝一份，不可变类型id不变，可变类型id改变</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">copy</span>
</span></span><span class="line"><span class="cl"><span class="n">list3</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">list1</span><span class="p">)</span>
</span></span></code></pre></div><h4 id="字典">字典</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;key&#34;</span><span class="p">:</span><span class="s2">&#34;value&#34;</span>
</span></span><span class="line"><span class="cl">	<span class="s2">&#34;1&#34;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;2&#34;</span><span class="p">:</span><span class="s2">&#34;qwe&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h3 id="垃圾回收机制gc">垃圾回收机制GC</h3>
<h4 id="引用计数">引用计数</h4>
<p>垃圾：变量值没有绑定变量名</p>
<p>引用计数：绑定某值的变量个数，python会清除计数为0的值</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">del</span> <span class="n">x</span>	<span class="c1"># 解除变量与值的绑定</span>
</span></span></code></pre></div><p>直接引用，间接引用</p>
<h4 id="标记清除">标记清除</h4>
<p>循环引用问题，可能导致内存泄漏</p>
<p>内存栈区存变量名，堆区存值</p>
<h4 id="分代回收">分代回收</h4>
<p>多次扫描都没有被回收的变量，会认为是常用变量，对他的扫描频率会降低</p>
<h3 id="用户交互">用户交互</h3>
<h4 id="输入">输入</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">input</span><span class="p">()</span> <span class="c1"># 存为str</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># python2</span>
</span></span><span class="line"><span class="cl"><span class="n">raw_input</span><span class="p">()</span>	<span class="c1"># 存为str</span>
</span></span><span class="line"><span class="cl"><span class="nb">input</span><span class="p">()</span>	<span class="c1"># 要求用户输入明确数据类型，输入的是什么类型就为什么类型</span>
</span></span></code></pre></div><h4 id="格式化输出">格式化输出</h4>
<ul>
<li>%格式化输出</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;name: </span><span class="si">%(name)s</span><span class="s2">, age:</span><span class="si">%(age)d</span><span class="s2">&#34;</span> <span class="o">%</span> <span class="p">{</span><span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;a&#34;</span><span class="p">,</span> <span class="s2">&#34;age&#34;</span><span class="p">:</span> <span class="mi">10</span><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="c1"># %s可以接受任何类型</span>
</span></span></code></pre></div><ul>
<li>str.format</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;name: </span><span class="si">{name}</span><span class="s2">, age:</span><span class="si">{age}</span><span class="s2">&#34;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s2">&#34;a&#34;</span><span class="p">,</span> <span class="n">age</span> <span class="o">=</span> <span class="mi">10</span><span class="p">))</span>
</span></span></code></pre></div><ul>
<li>f</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;name: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">, age:</span><span class="si">{</span><span class="n">age</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="基本运算符">基本运算符</h2>
<h3 id="算数运算符">算数运算符</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="mi">10</span> <span class="o">//</span> <span class="mi">3</span>	<span class="c1">#只保留整数部分，即整除</span>
</span></span><span class="line"><span class="cl"><span class="mi">3</span> <span class="o">**</span> <span class="mi">10</span>	<span class="c1">#指数</span>
</span></span><span class="line"><span class="cl"><span class="mi">10</span> <span class="o">%</span> <span class="mi">3</span> <span class="c1">#取余数</span>
</span></span></code></pre></div><h3 id="比较运算符">比较运算符</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="mi">1</span> <span class="o">!=</span> <span class="mi">2</span>
</span></span><span class="line"><span class="cl"><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="mi">3</span>
</span></span></code></pre></div><h3 id="赋值运算符">赋值运算符</h3>
<ul>
<li>变量赋值</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="mi">1</span>
</span></span></code></pre></div><ul>
<li>增量赋值</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"> <span class="n">a</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl"> <span class="n">b</span> <span class="o">*=</span> <span class="mi">1</span>
</span></span></code></pre></div><ul>
<li>链式赋值</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">z</span> <span class="o">=</span> <span class="n">y</span> <span class="o">=</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span> 
</span></span></code></pre></div><ul>
<li>交叉赋值</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">m</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="n">n</span><span class="p">,</span> <span class="n">m</span>
</span></span></code></pre></div><ul>
<li>解压赋值</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="nb">list</span>
</span></span><span class="line"><span class="cl"><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="o">=</span> <span class="nb">list</span>	<span class="c1">#取前两个</span>
</span></span><span class="line"><span class="cl"><span class="o">*</span><span class="n">_</span> <span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="nb">list</span>	<span class="c1">#取后两个</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 字典解压取值的是key</span>
</span></span></code></pre></div><h3 id="逻辑运算符">逻辑运算符</h3>
<p>隐式布尔：所有值，除了0，None， False，Null，空值 都是True</p>
<p>优先级 not&gt;and&gt;or</p>
<p><strong>短路运算</strong>：从左至右读取条件，连续and有一个false就不再往右读，并返回该位置的值</p>
<h3 id="成员运算符-in">成员运算符 in</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="s2">&#34;a&#34;</span> <span class="ow">in</span> <span class="s2">&#34;abc&#34;</span>
</span></span><span class="line"><span class="cl"><span class="mi">1</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
</span></span></code></pre></div><h3 id="身份运算符-is">身份运算符 is</h3>
<h2 id="流程控制">流程控制</h2>
<h3 id="if">if</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">if</span> <span class="mi">16</span> <span class="o">&lt;</span> <span class="n">a</span> <span class="o">&lt;</span> <span class="mi">20</span><span class="p">:</span>
</span></span></code></pre></div><p>elif 条件从上到下，上面的不满足才进下一个条件</p>
<h3 id="while">while</h3>
<p>条件循环</p>
<h4 id="whileelse">while+else</h4>
<p>循环正常结束，没有被break，运行else</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">	<span class="o">...</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">	<span class="o">...</span>
</span></span></code></pre></div><h3 id="for">for</h3>
<p>迭代循环</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">for</span> <span class="n">variable</span> <span class="ow">in</span> <span class="n">Iterable</span> <span class="nb">object</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">	<span class="o">...</span>
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">100</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">	<span class="o">...</span>
</span></span><span class="line"><span class="cl">  
</span></span></code></pre></div><h4 id="forelse">for+else</h4>
<h4 id="range">range</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># py2</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c1">#py3 优化</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
</span></span></code></pre></div><h4 id="print">print</h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;hello&#34;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">&#34;*&#34;</span><span class="p">)</span>	<span class="c1"># 自定义结束，默认为换行</span>
</span></span></code></pre></div><h2 id="基本数据类型及内置方法">基本数据类型及内置方法</h2>
<h3 id="数字类型">数字类型</h3>
<h4 id="int">int</h4>
<p>python3没有long长整型了</p>
<pre tabindex="0"><code>int(&#39;10&#39;)
bin(11) # 0b1011  0b开头即二进制
oct(11) # 0o13	8进制
hex(11)	# 0xb	16进制
int(int(&#39;0b1011&#39;, 2))	# 二进制转10进制
</code></pre><h4 id="float">float</h4>
<pre tabindex="0"><code>float(&#39;11&#39;)
</code></pre><h4 id="虚数">虚数</h4>
<pre tabindex="0"><code>x = 10 + 2j
x.real	#10
x.imag	#2
</code></pre><h3 id="字符串-1">字符串</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 不可变，是一个整体，不可单独改某个字符</span>
</span></span><span class="line"><span class="cl"><span class="nb">str</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span> <span class="o">=</span> <span class="s2">&#34;hello&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 切片</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># h</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># o</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># hello 顾头不顾尾</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># hlo</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="p">[</span><span class="mi">5</span><span class="p">:</span><span class="mi">0</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># olle</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="s2">&#34;alex&#34;</span> <span class="ow">in</span> <span class="err">”</span><span class="n">alexxxx</span><span class="s2">&#34;	# true</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;alex&#34;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="err">”</span><span class="n">alexxxx</span><span class="s2">&#34;	# false</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">msg</span> <span class="o">=</span> <span class="s2">&#34;    eee   &#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>	<span class="c1"># 默认去除两边空格 字符串不可变，故需要新赋值</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span> <span class="o">=</span> <span class="s2">&#34;***eee***&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="err">“</span><span class="o">*</span><span class="err">”</span><span class="p">)</span>  <span class="c1"># strip只去两边，不去中间</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 切分：按某字符分割字符串，返回列表</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&#34;:&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1"># 默认按空格为分隔符 分割次数，从左往右算</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">lsplit</span><span class="p">(</span><span class="s2">&#34;:&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">&#34;:&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1">#从右往左</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">res2</span> <span class="o">=</span> <span class="s2">&#34;:&#34;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="c1"># 以：为分隔符拼接</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="c1"># 小写</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&#34;aaa&#34;</span><span class="p">)</span> <span class="c1"># True 以什么开头</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&#34;aaa&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&#34;you&#34;</span><span class="p">,</span> <span class="s2">&#34;me&#34;</span> <span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="c1">#字符串替换，次数</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">“</span><span class="mi">123</span><span class="err">”</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="c1"># 纯数字</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&#34;e&#34;</span><span class="p">)</span> <span class="c1"># 返回索引，找不到返回-1</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s2">&#34;e&#34;</span><span class="p">)</span> <span class="c1"># 返回索引，找不到程序报错</span>
</span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s2">&#34;e&#34;</span><span class="p">)</span> <span class="c1"># 数子串出现次数</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;分割线&#34;</span><span class="o">.</span><span class="n">center</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="s2">&#34;*&#34;</span><span class="p">)</span> <span class="c1">#两侧用*填充</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;分割线&#34;</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="s2">&#34;*&#34;</span><span class="p">)</span> <span class="c1">#右侧填充</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;分割线&#34;</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="s2">&#34;*&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;分割线&#34;</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> <span class="c1"># 左侧用0填充</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># is 判断系列 查文档</span>
</span></span><span class="line"><span class="cl"><span class="n">isalpha</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">isdigit</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">isdecimal</span><span class="p">()</span> <span class="c1"># 只识别阿拉伯数字 py3 默认unicode</span>
</span></span><span class="line"><span class="cl"><span class="n">isnumeric</span><span class="p">()</span> <span class="c1"># 可以识别汉字，阿拉伯数字</span>
</span></span></code></pre></div><h3 id="列表-1">列表</h3>
<h3 id="元组">元组</h3>
<h3 id="字典-1">字典</h3>
<h3 id="集合">集合</h3>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
