@ -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
< / 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" > > > > < / 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" > > > > < / 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 >
y < span class = "hljs-number" > 2< / span >
Name: a, dtype: int64
@ -2638,19 +2638,30 @@ Name: a, dtype: int64
< pre > < code class = "python language-python hljs" > < Sr> = < Sr> .append(< Sr> ) < span class = "hljs-comment" > # Or: pd.concat(< coll_of_Sr> )< / span >
< Sr> = < Sr> .combine_first(< Sr> ) < span class = "hljs-comment" > # Adds items that are not yet present (extends).< / span >
< / code > < / pre >
< div > < h4 id = "operations" > Operations:< / h4 > < pre > < code class = "python language-python hljs" > < el> = < Sr> .sum/max/mean/idxmax/all()
< Sr> = < Sr> .diff/cumsum/rank/pct_change() < span class = "hljs-comment" > # …/fillna/ffill/interpolate()< / span >
< el> = < Sr> .apply/agg(< agg_func> )
< div > < h4 id = "aggregations" > Aggregations:< / h4 > < pre > < code class = "python language-python hljs" > < el> = < Sr> .sum/max/mean/idxmax/all()
< el> = < agg_func> (< Sr> )
< el> = < Sr> .apply/agg(< agg_func> ) < 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" > < Sr> = < Sr> .diff/cumsum/rank/pct_change() < span class = "hljs-comment" > # …/fillna/ffill/interpolate()< / span >
< Sr> = < Sr> .apply/agg/transform(< trans_func> )
< / 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 >
< 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" > > > > < / 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
@ -2679,27 +2690,40 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
< DF> = < DF> .transpose() < span class = "hljs-comment" > # Rotates the table.< / span >
< DF> = < DF> .melt(id_vars=column_key/s) < span class = "hljs-comment" > # Melts on columns.< / span >
< / code > < / pre >
< div > < h4 id = "operations-1" > Operations:< / h4 > < pre > < code class = "python language-python hljs" > < Sr> = < DF> .sum/max/mean/idxmax/all()
< DF> = < DF> .diff/cumsum/rank() < span class = "hljs-comment" > # …/pct_change/fillna/ffill/interpolate()< / span >
< pre > < code class = "python language-python hljs" > < Sr> = < DF> .sum/max/mean/idxmax/all()
< Sr> = < DF> .apply/agg/transform(< agg_func> )
< DF> = < DF> .diff/cumsum/rank() < span class = "hljs-comment" > # …/pct_change/fillna/ffill/interpolate()< / span >
< DF> = < DF> .apply/agg/transform(< trans_func> )
< DF> = < DF> .applymap(< func> ) < span class = "hljs-comment" > # Apply a function to a Dataframe elementwise.< / span >
< / code > < / pre > < / div >
< / code > < / pre >
< 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 >
< / 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" > > > > < / 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 >
< 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 >
< 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 > ])
x y
@ -2757,36 +2781,53 @@ c <span class="hljs-number">6</span> <span class="hljs-number">7</span>
< 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" > '< DF> .reset_index()'< / span > < / code > to move the index back into it's own column.< / strong > < / li >
< / ul >
< div > < h4 id = "operations-2" > Operations:< / h4 > < pre > < code class = "python language-python hljs" > < DF> = < GB> .sum/max/mean/idxmax/all()
< DF> = < GB> .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" > < DF> = < GB> .sum/max/mean/idxmax/all()
< DF> = < GB> .apply/agg/transform(< agg_func> )
< / 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" > < DF> = < GB> .diff/cumsum/rank() < span class = "hljs-comment" > # …/pct_change/fillna/ffill()< / span >
< DF> = < GB> .agg/transform(< trans_func> )
< / 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 >
< div > < h3 id = "rolling" > Rolling< / h3 > < pre > < code class = "python language-python hljs" > < Rl_S/D/G> = < Sr/DF/GB> .rolling(window_size) < span class = "hljs-comment" > # Also: `min_periods=None, center=False`.< / span >
< Rl_S/D> = < Rl_D/G> [column_key/s] < span class = "hljs-comment" > # Or: < Rl> .column_key< / span >
< Sr/DF/DF> = < Rl_S/D/G> .sum/max/mean()
< Sr/DF/DF> = < Rl_S/D/G> .apply(< func> ) < span class = "hljs-comment" > # Invokes function on every window.< / span >
< Sr/DF/DF> = < Rl_S/D/G> .apply(< agg_func> ) < span class = "hljs-comment" > # Invokes function on every window.< / span >
< Sr/DF/DF> = < Rl_S/D/G> .aggregate(< func/str> ) < span class = "hljs-comment" > # Invokes function on every window.< / span >
< / code > < / pre > < / div >