|
2613 | 2613 | <span class="hljs-keyword">from</span> pandas <span class="hljs-keyword">import</span> Series, DataFrame
|
2614 | 2614 | </code></pre></div>
|
2615 | 2615 |
|
2616 |
| -<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">>>> </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>) |
| 2616 | +<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">>>> </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>) |
2617 | 2617 | x <span class="hljs-number">1</span>
|
2618 | 2618 | y <span class="hljs-number">2</span>
|
2619 | 2619 | Name: a, dtype: int64
|
|
2636 | 2636 | <Sr> = <Sr> +-*/ <el/Sr> <span class="hljs-comment"># Non-matching keys get value NaN.</span>
|
2637 | 2637 | </code></pre>
|
2638 | 2638 | <pre><code class="python language-python hljs"><Sr> = <Sr>.append(<Sr>) <span class="hljs-comment"># Or: pd.concat(<coll_of_Sr>)</span>
|
2639 |
| -<Sr> = <Sr>.combine_first(<Sr>) <span class="hljs-comment"># Adds items that are not yet present (extends).</span> |
2640 |
| -combine, update? |
| 2639 | +<Sr> = <Sr>.combine_first(<Sr>) <span class="hljs-comment"># Adds items that are not yet present.</span> |
| 2640 | +<Sr>.update(<Sr>) <span class="hljs-comment"># Updates items that are already present.</span> |
2641 | 2641 | </code></pre>
|
2642 |
| -<div><h4 id="aggregations">Aggregations:</h4><pre><code class="python language-python hljs"><el> = <Sr>.sum/max/mean/idxmax/all() |
2643 |
| -<el> = <agg_func>(<Sr>) |
2644 |
| -<el> = <Sr>.apply/agg(<agg_func>) <span class="hljs-comment"># Apply can only accept strings.</span> |
| 2642 | +<pre><code class="python language-python hljs"><el> = <Sr>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <Sr>.aggregate(<agg_func>)</span> |
| 2643 | +<Sr> = <Sr>.diff/cumsum/rank/pct_change() <span class="hljs-comment"># Or: <Sr>.agg/transform(<trans_func>)</span> |
| 2644 | +<Sr> = <Sr>.fillna(<el>) <span class="hljs-comment"># Or: <Sr>.apply/agg/transform/map(<map_func>)</span> |
| 2645 | +</code></pre> |
| 2646 | +<ul> |
| 2647 | +<li><strong>Also: <code class="python hljs"><span class="hljs-string">'ffill()'</span></code> and <code class="python hljs"><span class="hljs-string">'interpolate()'</span></code>.</strong></li> |
| 2648 | +<li><strong>The way <code class="python hljs"><span class="hljs-string">'aggregate()'</span></code> and <code class="python hljs"><span class="hljs-string">'transform()'</span></code> find out whether a function accepts an element or the whole Series is by passing it a single value at first and if it raises an error, then they pass it the whole Series.</strong></li> |
| 2649 | +</ul> |
| 2650 | +<div><h4 id="applyaggregatetransform">Apply, Aggregate, Transform:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </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>) |
| 2651 | +x <span class="hljs-number">1</span> |
| 2652 | +y <span class="hljs-number">2</span> |
| 2653 | +Name: a, dtype: int64 |
2645 | 2654 | </code></pre></div>
|
2646 | 2655 |
|
2647 | 2656 | <pre><code class="python language-python hljs">+-------------+--------+-----------+---------------+
|
|
2652 | 2661 | | | | | |
|
2653 | 2662 | +-------------+--------+-----------+---------------+
|
2654 | 2663 | </code></pre>
|
2655 |
| -<div><h4 id="transformations">Transformations:</h4><pre><code class="python language-python hljs"><Sr> = <Sr>.diff/cumsum/rank/pct_change() <span class="hljs-comment"># …/fillna/ffill/interpolate()</span> |
2656 |
| -<Sr> = <Sr>.apply/agg/transform(<trans_func>) |
2657 |
| -map? |
2658 |
| -</code></pre></div> |
2659 |
| - |
2660 | 2664 | <pre><code class="python language-python hljs">+-------------+--------+-----------+---------------+
|
2661 | 2665 | | | <span class="hljs-string">'rank'</span> | [<span class="hljs-string">'rank'</span>] | {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} |
|
2662 | 2666 | +-------------+--------+-----------+---------------+
|
|
2692 | 2696 | <DF> = <DF>.transpose() <span class="hljs-comment"># Rotates the table.</span>
|
2693 | 2697 | <DF> = <DF>.melt(id_vars=column_key/s) <span class="hljs-comment"># Melts on columns.</span>
|
2694 | 2698 | </code></pre>
|
2695 |
| -<pre><code class="python language-python hljs"><Sr> = <DF>.sum/max/mean/idxmax/all() |
2696 |
| -<Sr> = <DF>.apply/agg/transform(<agg_func>) |
2697 |
| -<DF> = <DF>.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill/interpolate()</span> |
2698 |
| -<DF> = <DF>.apply/agg/transform(<trans_func>) |
2699 |
| -<DF> = <DF>.applymap(<func>) <span class="hljs-comment"># Apply a function to a Dataframe elementwise.</span> |
| 2699 | +<pre><code class="python language-python hljs"><Sr> = <DF>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <DF>.apply/agg/transform(<agg_func>)</span> |
| 2700 | +<DF> = <DF>.diff/cumsum/rank/pct_change() <span class="hljs-comment"># Or: <DF>.apply/agg/transform(<trans_func>)</span> |
| 2701 | +<DF> = <DF>.fillna(<el>) <span class="hljs-comment"># Or: <DF>.applymap(<map_func>)</span> |
2700 | 2702 | </code></pre>
|
2701 | 2703 | <ul>
|
| 2704 | +<li><strong>Also: <code class="python hljs"><span class="hljs-string">'ffill()'</span></code> and <code class="python hljs"><span class="hljs-string">'interpolate()'</span></code>.</strong></li> |
2702 | 2705 | <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>
|
2703 | 2706 | </ul>
|
2704 |
| -<div><h4 id="applyaggregatetransform">Apply, Aggregate, Transform:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </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>]) |
| 2707 | +<div><h4 id="applyaggregatetransform-1">Apply, Aggregate, Transform:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </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>]) |
2705 | 2708 | x y
|
2706 | 2709 | a <span class="hljs-number">1</span> <span class="hljs-number">2</span>
|
2707 | 2710 | b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
|
|
2783 | 2786 | <ul>
|
2784 | 2787 | <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">'<DF>.reset_index()'</span></code> to move the index back into it's own column.</strong></li>
|
2785 | 2788 | </ul>
|
2786 |
| -<div><h4 id="aggregations-1">Aggregations:</h4><pre><code class="python language-python hljs"><DF> = <GB>.sum/max/mean/idxmax/all() |
| 2789 | +<div><h4 id="aggregations">Aggregations:</h4><pre><code class="python language-python hljs"><DF> = <GB>.sum/max/mean/idxmax/all() |
2787 | 2790 | <DF> = <GB>.apply/agg/transform(<agg_func>)
|
2788 | 2791 | </code></pre></div>
|
2789 | 2792 |
|
|
2807 | 2810 | | | c <span class="hljs-number">11</span> <span class="hljs-number">13</span> | | |
|
2808 | 2811 | +-------------+------------+-------------+---------------+
|
2809 | 2812 | </code></pre>
|
2810 |
| -<div><h4 id="transformations-1">Transformations:</h4><pre><code class="python language-python hljs"><DF> = <GB>.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill()</span> |
| 2813 | +<div><h4 id="transformations">Transformations:</h4><pre><code class="python language-python hljs"><DF> = <GB>.diff/cumsum/rank() <span class="hljs-comment"># …/pct_change/fillna/ffill()</span> |
2811 | 2814 | <DF> = <GB>.agg/transform(<trans_func>)
|
2812 | 2815 | </code></pre></div>
|
2813 | 2816 |
|
|
0 commit comments