Browse Source

Pandas

pull/57/head
Jure Šorn 4 years ago
parent
commit
415e537014
2 changed files with 183 additions and 89 deletions
  1. 139
      README.md
  2. 133
      index.html

139
README.md

@ -3076,7 +3076,7 @@ from pandas import Series, DataFrame
**Ordered dictionary with a name.** **Ordered dictionary with a name.**
```python ```python
>>> Series([1, 2], index=['x', 'y'], name='a')
>>> sr = Series([1, 2], index=['x', 'y'], name='a')
x 1 x 1
y 2 y 2
Name: a, dtype: int64 Name: a, dtype: int64
@ -3110,22 +3110,37 @@ Name: a, dtype: int64
<Sr> = <Sr>.combine_first(<Sr>) # Adds items that are not yet present (extends). <Sr> = <Sr>.combine_first(<Sr>) # Adds items that are not yet present (extends).
``` ```
#### Operations:
#### Aggregations:
```python ```python
<el> = <Sr>.sum/max/mean/idxmax/all() <el> = <Sr>.sum/max/mean/idxmax/all()
<el> = <agg_func>(<Sr>)
<el> = <Sr>.apply/agg(<agg_func>) # Apply can only accept strings.
```
```python
+-------------+--------+-----------+---------------+
| | 'sum' | ['sum'] | {'s': 'sum'} |
+-------------+--------+-----------+---------------+
| sr.apply(…) | | | |
| sr.agg(…) | 3 | sum 3 | s 3 |
| | | | |
+-------------+--------+-----------+---------------+
```
#### Transformations:
```python
<Sr> = <Sr>.diff/cumsum/rank/pct_change() # …/fillna/ffill/interpolate() <Sr> = <Sr>.diff/cumsum/rank/pct_change() # …/fillna/ffill/interpolate()
<el> = <Sr>.apply/agg(<agg_func>)
<Sr> = <Sr>.apply/agg/transform(<trans_func>) <Sr> = <Sr>.apply/agg/transform(<trans_func>)
``` ```
```python ```python
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | 'sum' | ['sum'] | {'s': 'sum'} | 'rank' | ['rank'] | {'r': 'rank'} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| sr.apply(…) | | | | | rank | |
| sr.agg(…) | 3 | sum 3 | s 3 | x 1 | x 1 | r x 1 |
| | | | | y 2 | y 2 | y 2 |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
+-------------+--------+-----------+---------------+
| | 'rank' | ['rank'] | {'r': 'rank'} |
+-------------+--------+-----------+---------------+
| sr.apply(…) | | rank | |
| sr.agg(…) | x 1 | x 1 | r x 1 |
| sr.trans(…) | y 2 | y 2 | y 2 |
+-------------+--------+-----------+---------------+
``` ```
### DataFrame ### DataFrame
@ -3168,27 +3183,44 @@ b 3 4
<DF> = <DF>.melt(id_vars=column_key/s) # Melts on columns. <DF> = <DF>.melt(id_vars=column_key/s) # Melts on columns.
``` ```
#### Operations:
```python ```python
<Sr> = <DF>.sum/max/mean/idxmax/all() <Sr> = <DF>.sum/max/mean/idxmax/all()
<DF> = <DF>.diff/cumsum/rank() # …/pct_change/fillna/ffill/interpolate()
<Sr> = <DF>.apply/agg/transform(<agg_func>) <Sr> = <DF>.apply/agg/transform(<agg_func>)
<DF> = <DF>.diff/cumsum/rank() # …/pct_change/fillna/ffill/interpolate()
<DF> = <DF>.apply/agg/transform(<trans_func>) <DF> = <DF>.apply/agg/transform(<trans_func>)
<DF> = <DF>.applymap(<func>) # Apply a function to a Dataframe elementwise. <DF> = <DF>.applymap(<func>) # Apply a function to a Dataframe elementwise.
``` ```
* **All operations operate on columns by default. Use `'axis=1'` parameter to process the rows instead.** * **All operations operate on columns by default. Use `'axis=1'` parameter to process the rows instead.**
#### Apply, Aggregate, Transform:
```python ```python
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | 'sum' | ['sum'] | {'x': 'sum'} | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| df.apply(…) | | x y | | x y | x y | x |
| df.agg(…) | x 4 | sum 4 6 | x 4 | a 1 1 | rank rank | a 1 |
| df.trans(…) | y 6 | | | b 2 2 | a 1 1 | b 2 |
| | | | | | b 2 2 | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
>>> df = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y'])
x y
a 1 2
b 3 4
``` ```
* **Transform doesen't work with `['sum']` and `{'x': 'sum'}`.**
```python
+-------------+---------------+---------------+---------------+
| | 'sum' | ['sum'] | {'x': 'sum'} |
+-------------+---------------+---------------+---------------+
| df.apply(…) | | x y | |
| df.agg(…) | x 4 | sum 4 6 | x 4 |
| df.trans(…) | y 6 | | |
+-------------+---------------+---------------+---------------+
```
```python
+-------------+---------------+---------------+---------------+
| | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+---------------+---------------+---------------+
| df.apply(…) | x y | x y | x |
| df.agg(…) | a 1 1 | rank rank | a 1 |
| df.trans(…) | b 2 2 | a 1 1 | b 2 |
| | | b 2 2 | |
+-------------+---------------+---------------+---------------+
```
* **Transform() doesen't work with `['sum']` and `{'x': 'sum'}`.**
#### Merge, Join, Concat: #### Merge, Join, Concat:
```python ```python
@ -3253,34 +3285,55 @@ c 6 7
``` ```
* **Result of an operation is a dataframe with index made up of group keys. Use `'<DF>.reset_index()'` to move the index back into it's own column.** * **Result of an operation is a dataframe with index made up of group keys. Use `'<DF>.reset_index()'` to move the index back into it's own column.**
#### Operations:
#### Aggregations:
```python ```python
<DF> = <GB>.sum/max/mean/idxmax/all() <DF> = <GB>.sum/max/mean/idxmax/all()
<DF> = <GB>.diff/cumsum/rank() # …/pct_change/fillna/ffill()
<DF> = <GB>.apply/agg/transform(<agg_func>) <DF> = <GB>.apply/agg/transform(<agg_func>)
```
```python
+-------------+------------+-------------+---------------+
| | 'sum' | ['sum'] | {'x': 'sum'} |
+-------------+------------+-------------+---------------+
| gb.apply(…) | x y z | | |
| | z | | |
| | 3 1 2 3 | | |
| | 6 11 13 12 | | |
+-------------+------------+-------------+---------------+
| gb.agg(…) | x y | x y | x |
| | z | sum sum | z |
| | 3 1 2 | z | 3 1 |
| | 6 11 13 | 3 1 2 | 6 11 |
| | | 6 11 13 | |
+-------------+------------+-------------+---------------+
| gb.trans(…) | x y | | |
| | a 1 2 | | |
| | b 11 13 | | |
| | c 11 13 | | |
+-------------+------------+-------------+---------------+
```
#### Transformations:
```python
<DF> = <GB>.diff/cumsum/rank() # …/pct_change/fillna/ffill()
<DF> = <GB>.agg/transform(<trans_func>) <DF> = <GB>.agg/transform(<trans_func>)
``` ```
```python ```python
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | 'sum' | ['sum'] | {'x': 'sum'} | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.apply(…) | x y z | | | | | |
| | z | | | | | |
| | 3 1 2 3 | | | | | |
| | 6 11 13 12 | | | | | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.agg(…) | x y | x y | x | x y | x y | x |
| | z | sum sum | z | a 1 1 | rank rank | a 1 |
| | 3 1 2 | z | 3 1 | b 1 1 | a 1 1 | b 1 |
| | 6 11 13 | 3 1 2 | 6 11 | c 2 2 | b 1 1 | c 2 |
| | | 6 11 13 | | | c 2 2 | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.trans(…) | x y | | | x y | | |
| | a 1 2 | | | a 1 1 | | |
| | b 11 13 | | | b 1 1 | | |
| | c 11 13 | | | c 1 1 | | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
+-------------+------------+-------------+---------------+
| | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+------------+-------------+---------------+
| gb.agg(…) | x y | x y | x |
| | a 1 1 | rank rank | a 1 |
| | b 1 1 | a 1 1 | b 1 |
| | c 2 2 | b 1 1 | c 2 |
| | | c 2 2 | |
+-------------+------------+-------------+---------------+
| gb.trans(…) | x y | | |
| | a 1 1 | | |
| | b 1 1 | | |
| | c 1 1 | | |
+-------------+------------+-------------+---------------+
``` ```
### Rolling ### Rolling
@ -3288,7 +3341,7 @@ c 6 7
<Rl_S/D/G> = <Sr/DF/GB>.rolling(window_size) # Also: `min_periods=None, center=False`. <Rl_S/D/G> = <Sr/DF/GB>.rolling(window_size) # Also: `min_periods=None, center=False`.
<Rl_S/D> = <Rl_D/G>[column_key/s] # Or: <Rl>.column_key <Rl_S/D> = <Rl_D/G>[column_key/s] # Or: <Rl>.column_key
<Sr/DF/DF> = <Rl_S/D/G>.sum/max/mean() <Sr/DF/DF> = <Rl_S/D/G>.sum/max/mean()
<Sr/DF/DF> = <Rl_S/D/G>.apply(<func>) # Invokes function on every window.
<Sr/DF/DF> = <Rl_S/D/G>.apply(<agg_func>) # Invokes function on every window.
<Sr/DF/DF> = <Rl_S/D/G>.aggregate(<func/str>) # Invokes function on every window. <Sr/DF/DF> = <Rl_S/D/G>.aggregate(<func/str>) # Invokes function on every window.
``` ```

133
index.html

@ -2613,7 +2613,7 @@ SIZE, MAX_SPEED = <span class="hljs-number">50</span>, P(<span class="hljs-numbe
<span class="hljs-keyword">from</span> pandas <span class="hljs-keyword">import</span> Series, DataFrame <span class="hljs-keyword">from</span> pandas <span class="hljs-keyword">import</span> Series, DataFrame
</code></pre></div> </code></pre></div>
<div><h3 id="series">Series</h3><p><strong>Ordered dictionary with a name.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>Series([<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], index=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>], name=<span class="hljs-string">'a'</span>)
<div><h3 id="series">Series</h3><p><strong>Ordered dictionary with a name.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>sr = Series([<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], index=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>], name=<span class="hljs-string">'a'</span>)
x <span class="hljs-number">1</span> x <span class="hljs-number">1</span>
y <span class="hljs-number">2</span> y <span class="hljs-number">2</span>
Name: a, dtype: int64 Name: a, dtype: int64
@ -2638,19 +2638,30 @@ Name: a, dtype: int64
<pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;Sr&gt;.append(&lt;Sr&gt;) <span class="hljs-comment"># Or: pd.concat(&lt;coll_of_Sr&gt;)</span> <pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;Sr&gt;.append(&lt;Sr&gt;) <span class="hljs-comment"># Or: pd.concat(&lt;coll_of_Sr&gt;)</span>
&lt;Sr&gt; = &lt;Sr&gt;.combine_first(&lt;Sr&gt;) <span class="hljs-comment"># Adds items that are not yet present (extends).</span> &lt;Sr&gt; = &lt;Sr&gt;.combine_first(&lt;Sr&gt;) <span class="hljs-comment"># Adds items that are not yet present (extends).</span>
</code></pre> </code></pre>
<div><h4 id="operations">Operations:</h4><pre><code class="python language-python hljs">&lt;el&gt; = &lt;Sr&gt;.sum/max/mean/idxmax/all()
&lt;Sr&gt; = &lt;Sr&gt;.diff/cumsum/rank/pct_change() <span class="hljs-comment"># …/fillna/ffill/interpolate()</span>
&lt;el&gt; = &lt;Sr&gt;.apply/agg(&lt;agg_func&gt;)
<div><h4 id="aggregations">Aggregations:</h4><pre><code class="python language-python hljs">&lt;el&gt; = &lt;Sr&gt;.sum/max/mean/idxmax/all()
&lt;el&gt; = &lt;agg_func&gt;(&lt;Sr&gt;)
&lt;el&gt; = &lt;Sr&gt;.apply/agg(&lt;agg_func&gt;) <span class="hljs-comment"># Apply can only accept strings.</span>
</code></pre></div>
<pre><code class="python language-python hljs">+-------------+--------+-----------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'s'</span>: <span class="hljs-string">'sum'</span>} |
+-------------+--------+-----------+---------------+
| sr.apply(…) | | | |
| sr.agg(…) | <span class="hljs-number">3</span> | sum <span class="hljs-number">3</span> | s <span class="hljs-number">3</span> |
| | | | |
+-------------+--------+-----------+---------------+
</code></pre>
<div><h4 id="transformations">Transformations:</h4><pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;Sr&gt;.diff/cumsum/rank/pct_change() <span class="hljs-comment"># …/fillna/ffill/interpolate()</span>
&lt;Sr&gt; = &lt;Sr&gt;.apply/agg/transform(&lt;trans_func&gt;) &lt;Sr&gt; = &lt;Sr&gt;.apply/agg/transform(&lt;trans_func&gt;)
</code></pre></div> </code></pre></div>
<pre><code class="python language-python hljs">+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'s'</span>: <span class="hljs-string">'sum'</span>} | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| sr.apply(…) | | | | | rank | |
| sr.agg(…) | <span class="hljs-number">3</span> | sum <span class="hljs-number">3</span> | s <span class="hljs-number">3</span> | x <span class="hljs-number">1</span> | x <span class="hljs-number">1</span> | r x <span class="hljs-number">1</span> |
| | | | | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
<pre><code class="python language-python hljs">+-------------+--------+-----------+---------------+
| | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+--------+-----------+---------------+
| sr.apply(…) | | rank | |
| sr.agg(…) | x <span class="hljs-number">1</span> | x <span class="hljs-number">1</span> | r x <span class="hljs-number">1</span> |
| sr.trans(…) | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> |
+-------------+--------+-----------+---------------+
</code></pre> </code></pre>
<div><h3 id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>]) <div><h3 id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
x y x y
@ -2679,27 +2690,40 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
&lt;DF&gt; = &lt;DF&gt;.transpose() <span class="hljs-comment"># Rotates the table.</span> &lt;DF&gt; = &lt;DF&gt;.transpose() <span class="hljs-comment"># Rotates the table.</span>
&lt;DF&gt; = &lt;DF&gt;.melt(id_vars=column_key/s) <span class="hljs-comment"># Melts on columns.</span> &lt;DF&gt; = &lt;DF&gt;.melt(id_vars=column_key/s) <span class="hljs-comment"># Melts on columns.</span>
</code></pre> </code></pre>
<div><h4 id="operations-1">Operations:</h4><pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;DF&gt;.sum/max/mean/idxmax/all()
&lt;DF&gt; = &lt;DF&gt;.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill/interpolate()</span>
<pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;DF&gt;.sum/max/mean/idxmax/all()
&lt;Sr&gt; = &lt;DF&gt;.apply/agg/transform(&lt;agg_func&gt;) &lt;Sr&gt; = &lt;DF&gt;.apply/agg/transform(&lt;agg_func&gt;)
&lt;DF&gt; = &lt;DF&gt;.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill/interpolate()</span>
&lt;DF&gt; = &lt;DF&gt;.apply/agg/transform(&lt;trans_func&gt;) &lt;DF&gt; = &lt;DF&gt;.apply/agg/transform(&lt;trans_func&gt;)
&lt;DF&gt; = &lt;DF&gt;.applymap(&lt;func&gt;) <span class="hljs-comment"># Apply a function to a Dataframe elementwise.</span> &lt;DF&gt; = &lt;DF&gt;.applymap(&lt;func&gt;) <span class="hljs-comment"># Apply a function to a Dataframe elementwise.</span>
</code></pre></div>
</code></pre>
<ul> <ul>
<li><strong>All operations operate on columns by default. Use <code class="python hljs"><span class="hljs-string">'axis=1'</span></code> parameter to process the rows instead.</strong> </li> <li><strong>All operations operate on columns by default. Use <code class="python hljs"><span class="hljs-string">'axis=1'</span></code> parameter to process the rows instead.</strong> </li>
</ul> </ul>
<pre><code class="python language-python hljs">+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>} | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| df.apply(…) | | x y | | x y | x y | x |
| df.agg(…) | x <span class="hljs-number">4</span> | sum <span class="hljs-number">4</span> <span class="hljs-number">6</span> | x <span class="hljs-number">4</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| df.trans(…) | y <span class="hljs-number">6</span> | | | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">2</span> |
| | | | | | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
<div><h4 id="applyaggregatetransform">Apply, Aggregate, Transform:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>df = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
x y
a <span class="hljs-number">1</span> <span class="hljs-number">2</span>
b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
</code></pre></div>
<pre><code class="python language-python hljs">+-------------+---------------+---------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>} |
+-------------+---------------+---------------+---------------+
| df.apply(…) | | x y | |
| df.agg(…) | x <span class="hljs-number">4</span> | sum <span class="hljs-number">4</span> <span class="hljs-number">6</span> | x <span class="hljs-number">4</span> |
| df.trans(…) | y <span class="hljs-number">6</span> | | |
+-------------+---------------+---------------+---------------+
</code></pre>
<pre><code class="python language-python hljs">+-------------+---------------+---------------+---------------+
| | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+---------------+---------------+---------------+
| df.apply(…) | x y | x y | x |
| df.agg(…) | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| df.trans(…) | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">2</span> |
| | | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+---------------+---------------+---------------+
</code></pre> </code></pre>
<ul> <ul>
<li><strong>Transform doesen't work with <code class="python hljs">[<span class="hljs-string">'sum'</span>]</code> and <code class="python hljs">{<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>}</code>.</strong></li>
<li><strong>Transform() doesen't work with <code class="python hljs">[<span class="hljs-string">'sum'</span>]</code> and <code class="python hljs">{<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>}</code>.</strong></li>
</ul> </ul>
<div><h4 id="mergejoinconcat">Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>l = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>]) <div><h4 id="mergejoinconcat">Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>l = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
x y x y
@ -2757,36 +2781,53 @@ c <span class="hljs-number">6</span> <span class="hljs-number">7</span>
<ul> <ul>
<li><strong>Result of an operation is a dataframe with index made up of group keys. Use <code class="python hljs"><span class="hljs-string">'&lt;DF&gt;.reset_index()'</span></code> to move the index back into it's own column.</strong></li> <li><strong>Result of an operation is a dataframe with index made up of group keys. Use <code class="python hljs"><span class="hljs-string">'&lt;DF&gt;.reset_index()'</span></code> to move the index back into it's own column.</strong></li>
</ul> </ul>
<div><h4 id="operations-2">Operations:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.sum/max/mean/idxmax/all()
&lt;DF&gt; = &lt;GB&gt;.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill()</span>
<div><h4 id="aggregations-1">Aggregations:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.sum/max/mean/idxmax/all()
&lt;DF&gt; = &lt;GB&gt;.apply/agg/transform(&lt;agg_func&gt;) &lt;DF&gt; = &lt;GB&gt;.apply/agg/transform(&lt;agg_func&gt;)
</code></pre></div>
<pre><code class="python language-python hljs">+-------------+------------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>} |
+-------------+------------+-------------+---------------+
| gb.apply(…) | x y z | | |
| | z | | |
| | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> <span class="hljs-number">3</span> | | |
| | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> <span class="hljs-number">12</span> | | |
+-------------+------------+-------------+---------------+
| gb.agg(…) | x y | x y | x |
| | z | sum sum | z |
| | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> | z | <span class="hljs-number">3</span> <span class="hljs-number">1</span> |
| | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> | <span class="hljs-number">6</span> <span class="hljs-number">11</span> |
| | | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> | |
+-------------+------------+-------------+---------------+
| gb.trans(…) | x y | | |
| | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> | | |
| | b <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | |
| | c <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | |
+-------------+------------+-------------+---------------+
</code></pre>
<div><h4 id="transformations-1">Transformations:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill()</span>
&lt;DF&gt; = &lt;GB&gt;.agg/transform(&lt;trans_func&gt;) &lt;DF&gt; = &lt;GB&gt;.agg/transform(&lt;trans_func&gt;)
</code></pre></div> </code></pre></div>
<pre><code class="python language-python hljs">+-------------+------------+-----------+--------------+--------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>} | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.apply(…) | x y z | | | | | |
| | z | | | | | |
| | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> <span class="hljs-number">3</span> | | | | | |
| | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> <span class="hljs-number">12</span> | | | | | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.agg(…) | x y | x y | x | x y | x y | x |
| | z | sum sum | z | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> | z | <span class="hljs-number">3</span> <span class="hljs-number">1</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">1</span> |
| | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> | <span class="hljs-number">6</span> <span class="hljs-number">11</span> | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | c <span class="hljs-number">2</span> |
| | | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
| gb.trans(…) | x y | | | x y | | |
| | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> | | | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
| | b <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
| | c <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | | c <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
+-------------+------------+-----------+--------------+--------+-------------+---------------+
<pre><code class="python language-python hljs">+-------------+------------+-------------+---------------+
| | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} |
+-------------+------------+-------------+---------------+
| gb.agg(…) | x y | x y | x |
| | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">1</span> |
| | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | c <span class="hljs-number">2</span> |
| | | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+------------+-------------+---------------+
| gb.trans(…) | x y | | |
| | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
| | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
| | c <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
+-------------+------------+-------------+---------------+
</code></pre> </code></pre>
<div><h3 id="rolling">Rolling</h3><pre><code class="python language-python hljs">&lt;Rl_S/D/G&gt; = &lt;Sr/DF/GB&gt;.rolling(window_size) <span class="hljs-comment"># Also: `min_periods=None, center=False`.</span> <div><h3 id="rolling">Rolling</h3><pre><code class="python language-python hljs">&lt;Rl_S/D/G&gt; = &lt;Sr/DF/GB&gt;.rolling(window_size) <span class="hljs-comment"># Also: `min_periods=None, center=False`.</span>
&lt;Rl_S/D&gt; = &lt;Rl_D/G&gt;[column_key/s] <span class="hljs-comment"># Or: &lt;Rl&gt;.column_key</span> &lt;Rl_S/D&gt; = &lt;Rl_D/G&gt;[column_key/s] <span class="hljs-comment"># Or: &lt;Rl&gt;.column_key</span>
&lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.sum/max/mean() &lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.sum/max/mean()
&lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.apply(&lt;func&gt;) <span class="hljs-comment"># Invokes function on every window.</span>
&lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.apply(&lt;agg_func&gt;) <span class="hljs-comment"># Invokes function on every window.</span>
&lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.aggregate(&lt;func/str&gt;) <span class="hljs-comment"># Invokes function on every window.</span> &lt;Sr/DF/DF&gt; = &lt;Rl_S/D/G&gt;.aggregate(&lt;func/str&gt;) <span class="hljs-comment"># Invokes function on every window.</span>
</code></pre></div> </code></pre></div>

Loading…
Cancel
Save