<pre><codeclass="python language-python hljs"><Sr> = <Sr>><== <el/Sr><spanclass="hljs-comment"># Returns Series of bools.</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"># Non-matching keys get value NaN.</span>
| sr.agg(…) | <spanclass="hljs-number">3</span> | sum <spanclass="hljs-number">3</span> | s <spanclass="hljs-number">3</span> | x <spanclass="hljs-number">1</span> | x <spanclass="hljs-number">1</span> | r x <spanclass="hljs-number">1</span> |
| | | | | y <spanclass="hljs-number">2</span> | y <spanclass="hljs-number">2</span> | y <spanclass="hljs-number">2</span> |
<div><h3id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><codeclass="python language-python hljs"><spanclass="hljs-meta">>>></span>DataFrame([[<spanclass="hljs-number">1</span>, <spanclass="hljs-number">2</span>], [<spanclass="hljs-number">3</span>, <spanclass="hljs-number">4</span>]], index=[<spanclass="hljs-string">'a'</span>, <spanclass="hljs-string">'b'</span>], columns=[<spanclass="hljs-string">'x'</span>, <spanclass="hljs-string">'y'</span>])
x y
a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span>
@ -2649,30 +2659,49 @@ 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>
<pre><codeclass="python language-python hljs"><DF> = <DF>><== <el/Sr/DF><spanclass="hljs-comment"># Returns DataFrame of bools.</span>
<DF> = <DF> +-*/ <el/Sr/DF><spanclass="hljs-comment"># Non-matching keys get value NaN.</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF> = <DF>><== <el/Sr/DF><spanclass="hljs-comment"># Returns DataFrame of bools.</span>
<DF> = <DF> +-*/ <el/Sr/DF><spanclass="hljs-comment"># Non-matching keys get value NaN.</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 their own column.</span>
<DF> = <DF>.transpose() <spanclass="hljs-comment"># Rotates the table.</span>
<DF> = <DF>.melt(id_vars=column_key/s) <spanclass="hljs-comment"># Melts on columns.</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 their own column.</span>
<DF> = <DF>.transpose() <spanclass="hljs-comment"># Rotates the table.</span>
<DF> = <DF>.melt(id_vars=column_key/s) <spanclass="hljs-comment"># Melts on columns.</span>
<DF> = <DF>.applymap(<func>) <spanclass="hljs-comment"># Apply a function to a Dataframe elementwise.</span>
</code></pre></div>
<ul>
<li><strong>All operations operate on columns by default. Use <codeclass="python hljs"><spanclass="hljs-string">'axis=1'</span></code> parameter to process the rows instead.</strong></li>
| df.agg(…) | x <spanclass="hljs-number">4</span> | sum <spanclass="hljs-number">4</span><spanclass="hljs-number">6</span> | x <spanclass="hljs-number">4</span> | a <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | rank rank | a <spanclass="hljs-number">1</span> |
| df.trans(…) | y <spanclass="hljs-number">6</span> | | | b <spanclass="hljs-number">2</span><spanclass="hljs-number">2</span> | a <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | b <spanclass="hljs-number">2</span> |
| | | | | | b <spanclass="hljs-number">2</span><spanclass="hljs-number">2</span> | |
<li><strong>Transform doesen't work with <codeclass="python hljs">[<spanclass="hljs-string">'sum'</span>]</code> and <codeclass="python hljs">{<spanclass="hljs-string">'x'</span>: <spanclass="hljs-string">'sum'</span>}</code>.</strong></li>
┃ l.join(r, lsuffix=<spanclass="hljs-string">'l'</span>, │ x yl yr z │ │ x yl yr z ┃
┃ 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> . . ┃
┃ 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> ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ ┃
<div><h3id="groupby">GroupBy</h3><pre><codeclass="python language-python hljs"><DF_Gb> = <DF>.groupby(column_key/s) <spanclass="hljs-comment"># Columns that were used for groupin becme row_k.</span>
<DFs> = list(<DF_Gb>) <spanclass="hljs-comment"># Returns list of group_key - DataFrame tuples.</span>
<pre><codeclass="python language-python hljs"><Sr/DF> = <Sr/DF/GB>.apply(<func>) <spanclass="hljs-comment"># Invokes function on every value/column/group.</span>
<DF> = <DF>.applymap(<func>) <spanclass="hljs-comment"># Apply a function to a Dataframe elementwise.</span>
<Sr/DF> = <Sr/DF/GB>.aggregate(<func>) <spanclass="hljs-comment"># Invokes function on every column > number.</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. ┃
<div><h3id="groupby">GroupBy</h3><p><strong>Object that groups together rows of a dataframe based on the value of 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>))
<spanclass="hljs-number">3</span>: a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span><spanclass="hljs-number">3</span>
<spanclass="hljs-number">6</span>: b <spanclass="hljs-number">4</span><spanclass="hljs-number">5</span><spanclass="hljs-number">6</span>
c <spanclass="hljs-number">7</span><spanclass="hljs-number">8</span><spanclass="hljs-number">6</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>.get_group(group_key) <spanclass="hljs-comment"># Selects a group by value of grouping column.</span>
<DF> = <GB>.<operation>() <spanclass="hljs-comment"># Executes operation on each col of each group.</span>
<Sr/DF> = <Rl>.apply(<func>) <spanclass="hljs-comment"># Invokes function on every window.</span>
<Sr/DF> = <Rl>.aggregate(<func>) <spanclass="hljs-comment"># Invokes function on every window.</span>
<ul>
<li><strong>Result of an operation is a dataframe with index made up of group keys. Use <codeclass="python hljs"><spanclass="hljs-string">'<DF>.reset_index()'</span></code> to move the index back into it's own column.</strong></li>
| | z | sum sum | z | a <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | rank rank | a <spanclass="hljs-number">1</span> |
| | <spanclass="hljs-number">3</span><spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> | z | <spanclass="hljs-number">3</span><spanclass="hljs-number">1</span> | b <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | a <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | b <spanclass="hljs-number">1</span> |
| | <spanclass="hljs-number">6</span><spanclass="hljs-number">11</span><spanclass="hljs-number">13</span> | <spanclass="hljs-number">3</span><spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> | <spanclass="hljs-number">6</span><spanclass="hljs-number">11</span> | c <spanclass="hljs-number">2</span><spanclass="hljs-number">2</span> | b <spanclass="hljs-number">1</span><spanclass="hljs-number">1</span> | c <spanclass="hljs-number">2</span> |