|
54 | 54 |
|
55 | 55 | <body>
|
56 | 56 | <header>
|
57 |
| - <aside>February 4, 2022</aside> |
| 57 | + <aside>February 5, 2022</aside> |
58 | 58 | <a href="https://gto76.github.io" rel="author">Jure Šorn</a>
|
59 | 59 | </header>
|
60 | 60 |
|
|
2549 | 2549 | <Sr> = <Sr>.combine_first(<Sr>) <span class="hljs-comment"># Adds items that are not yet present.</span>
|
2550 | 2550 | <Sr>.update(<Sr>) <span class="hljs-comment"># Updates items that are already present.</span>
|
2551 | 2551 | </code></pre>
|
2552 |
| -<div><h4 id="aggregatetransformmap">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><el> = <Sr>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <Sr>.agg(lambda <Sr>: <el>)</span> |
| 2552 | +<div><h4 id="seriesaggregatetransformmap">Series — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><el> = <Sr>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <Sr>.agg(lambda <Sr>: <el>)</span> |
2553 | 2553 | <Sr> = <Sr>.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: <Sr>.agg/transform(lambda <Sr>: <Sr>)</span>
|
2554 | 2554 | <Sr> = <Sr>.fillna(<el>) <span class="hljs-comment"># Or: <Sr>.agg/transform/map(lambda <el>: <el>)</span>
|
2555 | 2555 | </code></pre></div>
|
|
2567 | 2567 | ┃ sr.apply(…) │ <span class="hljs-number">3</span> │ sum <span class="hljs-number">3</span> │ s <span class="hljs-number">3</span> ┃
|
2568 | 2568 | ┃ sr.agg(…) │ │ │ ┃
|
2569 | 2569 | ┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
|
2570 |
| -</code></pre> |
2571 |
| -<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓ |
| 2570 | + |
| 2571 | +┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓ |
2572 | 2572 | ┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} ┃
|
2573 | 2573 | ┠─────────────────┼─────────────┼─────────────┼───────────────┨
|
2574 | 2574 | ┃ sr.apply(…) │ │ rank │ ┃
|
|
2606 | 2606 | <DF> = <DF>.sort_index(ascending=<span class="hljs-keyword">True</span>) <span class="hljs-comment"># Sorts rows by row keys.</span>
|
2607 | 2607 | <DF> = <DF>.sort_values(column_key/s) <span class="hljs-comment"># Sorts rows by the passed column/s.</span>
|
2608 | 2608 | </code></pre>
|
2609 |
| -<div><h4 id="mergejoinconcat">Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </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>]) |
| 2609 | +<div><h4 id="dataframemergejoinconcat">DataFrame — Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </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>]) |
2610 | 2610 | x y
|
2611 | 2611 | a <span class="hljs-number">1</span> <span class="hljs-number">2</span>
|
2612 | 2612 | b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
|
|
2646 | 2646 | ┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ R must be a DataFrame. ┃
|
2647 | 2647 | ┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
2648 | 2648 | </code></pre>
|
2649 |
| -<div><h4 id="aggregatetransformmap-1">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><Sr> = <DF>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <DF>.apply/agg(lambda <Sr>: <el>)</span> |
| 2649 | +<div><h4 id="dataframeaggregatetransformmap">DataFrame — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><Sr> = <DF>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <DF>.apply/agg(lambda <Sr>: <el>)</span> |
2650 | 2650 | <DF> = <DF>.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: <DF>.apply/agg/transform(lambda <Sr>: <Sr>)</span>
|
2651 | 2651 | <DF> = <DF>.fillna(<el>) <span class="hljs-comment"># Or: <DF>.applymap(lambda <el>: <el>)</span>
|
2652 | 2652 | </code></pre></div>
|
2653 | 2653 |
|
2654 | 2654 | <ul>
|
2655 |
| -<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. Transform passes DF to a function if it raises an error after receiving a Sr.</strong></li> |
| 2655 | +<li><strong>All operations operate on columns by default. Pass <code class="python hljs"><span class="hljs-string">'axis=1'</span></code> to process the rows instead.</strong></li> |
2656 | 2656 | </ul>
|
2657 | 2657 | <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>])
|
2658 | 2658 | x y
|
|
2666 | 2666 | ┃ 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> ┃
|
2667 | 2667 | ┃ │ y <span class="hljs-number">6</span> │ │ ┃
|
2668 | 2668 | ┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
|
2669 |
| -</code></pre> |
2670 |
| -<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓ |
| 2669 | + |
| 2670 | +┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓ |
2671 | 2671 | ┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} ┃
|
2672 | 2672 | ┠─────────────────┼─────────────┼─────────────┼───────────────┨
|
2673 | 2673 | ┃ df.apply(…) │ x y │ x y │ x ┃
|
|
2679 | 2679 | <ul>
|
2680 | 2680 | <li><strong>Use <code class="python hljs"><span class="hljs-string">'<DF>[col_key_1, col_key_2][row_key]'</span></code> to get the fifth result's values.</strong></li>
|
2681 | 2681 | </ul>
|
2682 |
| -<div><h4 id="encodedecode">Encode, Decode:</h4><pre><code class="python language-python hljs"><DF> = pd.read_json/html(<span class="hljs-string">'<str/path/url>'</span>) |
| 2682 | +<div><h4 id="dataframeencodedecodeplot">DataFrame — Encode, Decode, Plot:</h4><pre><code class="python language-python hljs"><DF> = pd.read_json/html(<span class="hljs-string">'<str/path/url>'</span>) |
2683 | 2683 | <DF> = pd.read_csv/pickle/excel(<span class="hljs-string">'<path/url>'</span>)
|
2684 | 2684 | <DF> = pd.read_sql(<span class="hljs-string">'<table_name/query>'</span>, <connection>)
|
2685 | 2685 | <DF> = pd.read_clipboard()
|
|
2690 | 2690 | <DF>.to_pickle/excel(<path>)
|
2691 | 2691 | <DF>.to_sql(<span class="hljs-string">'<table_name>'</span>, <connection>)
|
2692 | 2692 | </code></pre>
|
| 2693 | +<pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt |
| 2694 | +<DF>.plot.line/bar/hist/scatter([x=column_key, y=column_key/s]); plt.show() |
| 2695 | +</code></pre> |
2693 | 2696 | <div><h3 id="groupby">GroupBy</h3><p><strong>Object that groups together rows of a dataframe based on the value of the passed column.</strong></p><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>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>], [<span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">6</span>]], index=list(<span class="hljs-string">'abc'</span>), columns=list(<span class="hljs-string">'xyz'</span>))
|
2694 | 2697 | <span class="hljs-meta">>>> </span>df.groupby(<span class="hljs-string">'z'</span>).get_group(<span class="hljs-number">6</span>)
|
2695 | 2698 | x y
|
|
2699 | 2702 |
|
2700 | 2703 |
|
2701 | 2704 | <pre><code class="python language-python hljs"><GB> = <DF>.groupby(column_key/s) <span class="hljs-comment"># DF is split into groups based on passed column.</span>
|
2702 |
| -<DF> = <GB>.get_group(group_key/s) <span class="hljs-comment"># Selects a group by value of grouping column.</span> |
2703 | 2705 | <DF> = <GB>.apply(<func>) <span class="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span>
|
2704 | 2706 | <GB> = <GB>[column_key] <span class="hljs-comment"># A single column GB. All operations return a Sr.</span>
|
2705 | 2707 | </code></pre>
|
2706 |
| -<div><h4 id="aggregatetransformmap-2">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><DF> = <GB>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <GB>.agg(lambda <Sr>: <el>)</span> |
| 2708 | +<div><h4 id="groupbyaggregatetransformmap">GroupBy — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs"><DF> = <GB>.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: <GB>.agg(lambda <Sr>: <el>)</span> |
2707 | 2709 | <DF> = <GB>.rank/diff/cumsum/ffill() <span class="hljs-comment"># Or: <GB>.transform(lambda <Sr>: <Sr>)</span>
|
2708 | 2710 | <DF> = <GB>.fillna(<el>) <span class="hljs-comment"># Or: <GB>.transform(lambda <Sr>: <Sr>)</span>
|
2709 | 2711 | </code></pre></div>
|
|
2881 | 2883 |
|
2882 | 2884 |
|
2883 | 2885 | <footer>
|
2884 |
| - <aside>February 4, 2022</aside> |
| 2886 | + <aside>February 5, 2022</aside> |
2885 | 2887 | <a href="https://gto76.github.io" rel="author">Jure Šorn</a>
|
2886 | 2888 | </footer>
|
2887 | 2889 |
|
|
0 commit comments