</ul><div><h4id="besidesnumberspackandunpackalsosupportbytesobjectsaspartofthesequence">Besides numbers, pack() and unpack() also support bytes objects as part of the sequence:</h4><ul>
<li><strong><codeclass="python hljs"><spanclass="hljs-string">'c'</span></code> - A bytes object with a single element. Use <codeclass="python hljs"><spanclass="hljs-string">'x'</span></code> for pad byte.</strong></li>
<li><strong><codeclass="python hljs"><spanclass="hljs-string">'c'</span></code> - A bytes object with a single element. For pad byte use <codeclass="python hljs"><spanclass="hljs-string">'x'</span></code>.</strong></li>
<li><strong><codeclass="apache hljs"><spanclass="hljs-section">'<n>s'</span><spanclass="hljs-attribute"></span></code> - A bytes object with n elements.</strong></li>
</ul></div></div><div><div><h4id="integertypesuseacapitalletterforunsignedtypeminimumandstandardsizesareinbrackets">Integer types. Use a capital letter for unsigned type. Minimum and standard sizes are in brackets:</h4><ul>
<pre><codeclass="python language-python hljs">logger.add(<spanclass="hljs-string">'debug_{time}.log'</span>, colorize=<spanclass="hljs-keyword">True</span>) <spanclass="hljs-comment"># Connects a log file.</span>
logger.add(<spanclass="hljs-string">'error_{time}.log'</span>, level=<spanclass="hljs-string">'ERROR'</span>) <spanclass="hljs-comment"># Another file for errors or higher.</span>
<pre><codeclass="python language-python hljs"><Sr> = <Sr>><== <el/Sr><spanclass="hljs-comment"># Returns a Series of bools.</span>
<Sr> = <Sr> +-*/ <el/Sr><spanclass="hljs-comment"># Items with non-matching keys get value NaN.</span>
<pre><codeclass="python language-python hljs"><Sr> = <Sr>><== <el/Sr><spanclass="hljs-comment"># Returns a Series of bools.</span>
<Sr> = <Sr> +-*/ <el/Sr><spanclass="hljs-comment"># Items with non-matching keys get value NaN.</span>
@ -2607,25 +2607,25 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
</code></pre></div>
<pre><codeclass="python language-python hljs"><DF> = DataFrame(<list_of_rows>) <spanclass="hljs-comment"># Rows can be either lists, dicts or series.</span>
<DF> = DataFrame(<dict_of_columns>) <spanclass="hljs-comment"># Columns can be either lists, dicts or series.</span>
<pre><codeclass="python language-python hljs"><DF> = DataFrame(<list_of_rows>) <spanclass="hljs-comment"># Rows can be either lists, dicts or series.</span>
<DF> = DataFrame(<dict_of_columns>) <spanclass="hljs-comment"># Columns can be either lists, dicts or series.</span>
<DF> = <DF>[row_bools] <spanclass="hljs-comment"># Keeps rows as specified by bools.</span>
<DF> = <DF>[<DF_of_bools>] <spanclass="hljs-comment"># Assigns NaN to False values.</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF> = <DF>><== <el/Sr/DF><spanclass="hljs-comment"># Returns DF of bools. Sr is treated as a row.</span>
<DF> = <DF> +-*/ <el/Sr/DF><spanclass="hljs-comment"># Items with non-matching keys get value NaN.</span>
<pre><codeclass="python language-python hljs"><DF> = <DF>><== <el/Sr/DF><spanclass="hljs-comment"># Returns DF of bools. Sr is treated as a row.</span>
<DF> = <DF> +-*/ <el/Sr/DF><spanclass="hljs-comment"># Items with non-matching keys get value NaN.</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF> = <DF>.set_index(column_key) <spanclass="hljs-comment"># Replaces row keys with values from a column.</span>
<DF> = <DF>.reset_index() <spanclass="hljs-comment"># Moves row keys to a column named index.</span>
<DF> = <DF>.sort_index(ascending=<spanclass="hljs-keyword">True</span>) <spanclass="hljs-comment"># Sorts rows by row keys.</span>
<DF> = <DF>.sort_values(column_key/s) <spanclass="hljs-comment"># Sorts rows by the passed column/s.</span>
<pre><codeclass="python language-python hljs"><DF> = <DF>.set_index(column_key) <spanclass="hljs-comment"># Replaces row keys with values from a column.</span>
<DF> = <DF>.reset_index() <spanclass="hljs-comment"># Moves row keys to a column named index.</span>
<DF> = <DF>.sort_index(ascending=<spanclass="hljs-keyword">True</span>) <spanclass="hljs-comment"># Sorts rows by row keys.</span>
<DF> = <DF>.sort_values(column_key/s) <spanclass="hljs-comment"># Sorts rows by the passed column/s.</span>
┃ l.join(r, lsuffix=<spanclass="hljs-string">'l'</span>, │ x yl yr z │ │ x yl yr z │ Joins/merges on row keys.┃
┃ rsuffix=<spanclass="hljs-string">'r'</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x yl yr z │ <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ Uses <spanclass="hljs-string">'left'</span> by default. ┃
┃ how=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ If r is a series, it is ┃
┃ how=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ If r is a Series, it is ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
┃ pd.concat([l, r], │ x y y z │ │ │ Adds columns at the ┃
┃ axis=<spanclass="hljs-number">1</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x y y z │ │ right end. Uses <spanclass="hljs-string">'outer'</span> ┃
┃ join=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ │ by default. A series is ┃
┃ join=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ │ by default. A Series is ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
@ -2701,19 +2701,19 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
<ul>
<li><strong>Use <codeclass="python hljs"><spanclass="hljs-string">'<DF>[col_key_1, col_key_2][row_key]'</span></code> to get the fifth result's values.</strong></li>
<pre><codeclass="python language-python hljs"><DF> = pd.read_json/html(<spanclass="hljs-string">'<str/path/url>'</span>)<spanclass="hljs-comment"># Run `$ pip3 install lxml` to read html.</span>
<DF> = pd.read_csv/pickle/excel(<spanclass="hljs-string">'<path/url>'</span>)<spanclass="hljs-comment"># Use `sheet_name=None` to get all Excel sheets.</span>
<DF> = pd.read_sql(<spanclass="hljs-string">'<table/query>'</span>, <conn.>) <spanclass="hljs-comment"># Accepts SQLite3 or SQLAlchemy connection.</span>
<DF> = pd.read_clipboard()<spanclass="hljs-comment"># Reads a copied table from the clipboard.</span>
<pre><codeclass="python language-python hljs"><dict> = <DF>.to_dict([<spanclass="hljs-string">'d/l/s/…'</span>]) <spanclass="hljs-comment"># Returns columns as dicts, lists or series.</span>
<str> = <DF>.to_json/html/csv([<path>]) <spanclass="hljs-comment"># Also to_markdown/latex([<path>]).</span>
<DF>.to_pickle/excel(<path>)<spanclass="hljs-comment"># Run `$ pip3 install openpyxl` for xlsx files.</span>
<DF>.to_sql(<spanclass="hljs-string">'<table_name>'</span>, <connection>)<spanclass="hljs-comment"># Accepts SQLite3 or SQLAlchemy connection.</span>
</code></pre>
<div><h3id="groupby">GroupBy</h3><p><strong>Object that groups together rows of a dataframe based on the value of the passed column.</strong></p><pre><codeclass="python language-python hljs"><spanclass="hljs-meta">>>></span>df = DataFrame([[<spanclass="hljs-number">1</span>, <spanclass="hljs-number">2</span>, <spanclass="hljs-number">3</span>], [<spanclass="hljs-number">4</span>, <spanclass="hljs-number">5</span>, <spanclass="hljs-number">6</span>], [<spanclass="hljs-number">7</span>, <spanclass="hljs-number">8</span>, <spanclass="hljs-number">6</span>]], index=list(<spanclass="hljs-string">'abc'</span>), columns=list(<spanclass="hljs-string">'xyz'</span>))
@ -2723,13 +2723,13 @@ c <span class="hljs-number">7</span> <span class="hljs-number">8</span>
</code></pre></div>
<pre><codeclass="python language-python hljs"><GB> = <DF>.groupby(column_key/s) <spanclass="hljs-comment"># DF is split into groups based on passed column.</span>
<DF> = <GB>.apply(<func>) <spanclass="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span>
<GB> = <GB>[column_key] <spanclass="hljs-comment"># A single column GB. All operations return a Sr.</span>
<pre><codeclass="python language-python hljs"><GB> = <DF>.groupby(column_key/s) <spanclass="hljs-comment"># Splits DF into groups based on passed column.</span>
<DF> = <GB>.apply(<func>) <spanclass="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span>
<GB> = <GB>[column_key] <spanclass="hljs-comment"># Single column GB. All operations return a Sr.</span>
@ -2753,9 +2753,9 @@ c <span class="hljs-number">7</span> <span class="hljs-number">8</span>
┃ │ c <spanclass="hljs-number">11</span><spanclass="hljs-number">13</span> │ c <spanclass="hljs-number">2</span><spanclass="hljs-number">2</span> │ │ ┃