From 8877683ea79cd8c424d05f94360bfeb31ded4107 Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 14:55:16 -0700 Subject: [PATCH 1/7] Adding examples to fillna --- pandas/core/frame.py | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 78a369761afc1..15d159a906687 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2915,6 +2915,54 @@ def rename(self, index=None, columns=None, **kwargs): @Appender(_shared_docs['fillna'] % _shared_doc_kwargs) def fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs): + """ + Examples + -------- + >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], + ... [np.nan, np.nan, np.nan, 5]], + ... columns=list('ABCD')) + >>> df + A B C D + 0 NaN 2.0 NaN 0 + 1 3.0 4.0 NaN 1 + 2 NaN NaN NaN 5 + + Replace all NaN elements with 0s. + + >>> df.fillna(0) + A B C D + 0 0.0 2.0 0.0 0 + 1 3.0 4.0 0.0 1 + 2 0.0 0.0 0.0 5 + + Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, 2, and 3 respectively. + + >>> values = { + ... 'A': 0, + ... 'B': 1, + ... 'C': 2, + ... 'D': 3, + ... } + ... df.fillna(value=values) + A B C D + 0 0.0 2.0 2.0 0 + 1 3.0 4.0 2.0 1 + 2 0.0 1.0 2.0 5 + + Only replace the first NaN element. + + >>> values = { + ... 'A': 0, + ... 'B': 1, + ... 'C': 2, + ... 'D': 3, + ... } + ... df.fillna(value=values, limit=1) + A B C D + 0 0.0 2.0 2.0 0 + 1 3.0 4.0 NaN 1 + 2 NaN 1.0 NaN 5 + """ return super(DataFrame, self).fillna(value=value, method=method, axis=axis, inplace=inplace, limit=limit, From 88b1e76051455fdaa167ab0eacdaafac9d85f05a Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 15:11:52 -0700 Subject: [PATCH 2/7] putting better spacing --- pandas/core/frame.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 15d159a906687..6b4c51764b2f4 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2918,9 +2918,10 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, """ Examples -------- - >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], + >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], + ... [3, 4, np.nan, 1], ... [np.nan, np.nan, np.nan, 5]], - ... columns=list('ABCD')) + ... columns=list('ABCD')) >>> df A B C D 0 NaN 2.0 NaN 0 @@ -2935,14 +2936,10 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, 1 3.0 4.0 0.0 1 2 0.0 0.0 0.0 5 - Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, 2, and 3 respectively. + Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, 2, + and 3 respectively. - >>> values = { - ... 'A': 0, - ... 'B': 1, - ... 'C': 2, - ... 'D': 3, - ... } + >>> values = {'A': 0, 'B': 1, 'C': 2, 'D': 3} ... df.fillna(value=values) A B C D 0 0.0 2.0 2.0 0 From ed78262f4623b80e64408d8917e12edcab9d86b6 Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 15:26:49 -0700 Subject: [PATCH 3/7] removing unnecessary values variable --- pandas/core/frame.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 6b4c51764b2f4..9be6af41de067 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2948,13 +2948,7 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, Only replace the first NaN element. - >>> values = { - ... 'A': 0, - ... 'B': 1, - ... 'C': 2, - ... 'D': 3, - ... } - ... df.fillna(value=values, limit=1) + >>> df.fillna(value=values, limit=1) A B C D 0 0.0 2.0 2.0 0 1 3.0 4.0 NaN 1 From cee399e6ad99f4a9e395e930aeab998f4fcc91aa Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 15:44:56 -0700 Subject: [PATCH 4/7] Adding an example for method ffill --- pandas/core/frame.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 9be6af41de067..d83a8c94c8361 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2920,13 +2920,15 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, -------- >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], ... [3, 4, np.nan, 1], - ... [np.nan, np.nan, np.nan, 5]], + ... [np.nan, np.nan, np.nan, 5], + ... [np.nan, 3, np.nan, 4]], ... columns=list('ABCD')) >>> df A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 NaN NaN NaN 5 + 3 NaN 3.0 NaN 4 Replace all NaN elements with 0s. @@ -2935,6 +2937,16 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, 0 0.0 2.0 0.0 0 1 3.0 4.0 0.0 1 2 0.0 0.0 0.0 5 + 3 0.0 3.0 0.0 4 + + We can also propagate non-null values forward or backward. + + >>> df.fillna(method='ffill') + A B C D + 0 NaN 2.0 NaN 0 + 1 3.0 4.0 NaN 1 + 2 3.0 4.0 NaN 5 + 3 3.0 3.0 NaN 4 Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, 2, and 3 respectively. @@ -2945,6 +2957,7 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, 0 0.0 2.0 2.0 0 1 3.0 4.0 2.0 1 2 0.0 1.0 2.0 5 + 3 0.0 3.0 2.0 4 Only replace the first NaN element. @@ -2953,6 +2966,7 @@ def fillna(self, value=None, method=None, axis=None, inplace=False, 0 0.0 2.0 2.0 0 1 3.0 4.0 NaN 1 2 NaN 1.0 NaN 5 + 3 NaN 3.0 NaN 4 """ return super(DataFrame, self).fillna(value=value, method=method, axis=axis, From 4d0ce5da8be9966ed26dd39eb3c977a0f3eafa24 Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 16:24:14 -0700 Subject: [PATCH 5/7] adding examples for drop method --- pandas/core/generic.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 2e7d8693d48dd..4eab205cbc3d9 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -2055,6 +2055,36 @@ def drop(self, labels, axis=0, level=None, inplace=False, errors='raise'): Returns ------- dropped : type of caller + + Examples + -------- + >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], + ... [3, 4, np.nan, 1], + ... [np.nan, np.nan, np.nan, 5], + ... [np.nan, 3, np.nan, 4] + ... ], + ... columns=list('ABCD')) + >>> df + A B C D + 0 NaN 2.0 NaN 0 + 1 3.0 4.0 NaN 1 + 2 NaN NaN NaN 5 + 3 NaN 3.0 NaN 4 + + Drop a row by index + + >>> df.drop([0, 1]) + A B C D + 2 NaN NaN NaN 5 + 3 NaN 3.0 NaN 4 + + Drop columns + >>> df.drop(['A', 'B'], axis=1) + C D + 0 NaN 0 + 1 NaN 1 + 2 NaN 5 + 3 NaN 4 """ inplace = validate_bool_kwarg(inplace, 'inplace') axis = self._get_axis_number(axis) From 948858510c806a1fd8a957ef0a9f007e37d27585 Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 17:05:30 -0700 Subject: [PATCH 6/7] Adding examples for sort_values --- pandas/core/generic.py | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 4eab205cbc3d9..499669247cc95 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -2079,6 +2079,7 @@ def drop(self, labels, axis=0, level=None, inplace=False, errors='raise'): 3 NaN 3.0 NaN 4 Drop columns + >>> df.drop(['A', 'B'], axis=1) C D 0 NaN 0 @@ -2198,6 +2199,66 @@ def add_suffix(self, suffix): Returns ------- sorted_obj : %(klass)s + + Examples + -------- + >>> df = pd.DataFrame({ + ... 'col1' : ['A', 'A', 'B', np.nan, 'D', 'C'], + ... 'col2' : [2, 1, 9, 8, 7, 4], + ... 'col3': [0, 1, 9, 4, 2, 3], + ... }) + >>> df + col1 col2 col3 + 0 A 2 0 + 1 A 1 1 + 2 B 9 9 + 3 NaN 8 4 + 4 D 7 2 + 5 C 4 3 + + Sort by col1 + + >>> df.sort_values(by=['col1']) + col1 col2 col3 + 0 A 2 0 + 1 A 1 1 + 2 B 9 9 + 5 C 4 3 + 4 D 7 2 + 3 NaN 8 4 + + Sort by multiple columns + + >>> df.sort_values(by=['col1', 'col2']) + col1 col2 col3 + 1 A 1 1 + 0 A 2 0 + 2 B 9 9 + 5 C 4 3 + 4 D 7 2 + 3 NaN 8 4 + + Sort Descending + + >>> df.sort_values(by='col1', ascending=False) + col1 col2 col3 + 4 D 7 2 + 5 C 4 3 + 2 B 9 9 + 0 A 2 0 + 1 A 1 1 + 3 NaN 8 4 + + Putting NAs first + + >>> df.sort_values(by='col1', ascending=False, na_position='first') + col1 col2 col3 + 3 NaN 8 4 + 4 D 7 2 + 5 C 4 3 + 2 B 9 9 + 0 A 2 0 + 1 A 1 1 """ def sort_values(self, by, axis=0, ascending=True, inplace=False, From fe13093075dd9353bbda500f91131a82621b2847 Mon Sep 17 00:00:00 2001 From: VincentLa Date: Mon, 22 May 2017 20:37:21 -0700 Subject: [PATCH 7/7] Fixing linter error moving fillna to generic and fixing a typo --- pandas/core/frame.py | 53 ---------------------------- pandas/core/generic.py | 80 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 66 insertions(+), 67 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index d83a8c94c8361..78a369761afc1 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2915,59 +2915,6 @@ def rename(self, index=None, columns=None, **kwargs): @Appender(_shared_docs['fillna'] % _shared_doc_kwargs) def fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs): - """ - Examples - -------- - >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], - ... [3, 4, np.nan, 1], - ... [np.nan, np.nan, np.nan, 5], - ... [np.nan, 3, np.nan, 4]], - ... columns=list('ABCD')) - >>> df - A B C D - 0 NaN 2.0 NaN 0 - 1 3.0 4.0 NaN 1 - 2 NaN NaN NaN 5 - 3 NaN 3.0 NaN 4 - - Replace all NaN elements with 0s. - - >>> df.fillna(0) - A B C D - 0 0.0 2.0 0.0 0 - 1 3.0 4.0 0.0 1 - 2 0.0 0.0 0.0 5 - 3 0.0 3.0 0.0 4 - - We can also propagate non-null values forward or backward. - - >>> df.fillna(method='ffill') - A B C D - 0 NaN 2.0 NaN 0 - 1 3.0 4.0 NaN 1 - 2 3.0 4.0 NaN 5 - 3 3.0 3.0 NaN 4 - - Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, 2, - and 3 respectively. - - >>> values = {'A': 0, 'B': 1, 'C': 2, 'D': 3} - ... df.fillna(value=values) - A B C D - 0 0.0 2.0 2.0 0 - 1 3.0 4.0 2.0 1 - 2 0.0 1.0 2.0 5 - 3 0.0 3.0 2.0 4 - - Only replace the first NaN element. - - >>> df.fillna(value=values, limit=1) - A B C D - 0 0.0 2.0 2.0 0 - 1 3.0 4.0 NaN 1 - 2 NaN 1.0 NaN 5 - 3 NaN 3.0 NaN 4 - """ return super(DataFrame, self).fillna(value=value, method=method, axis=axis, inplace=inplace, limit=limit, diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 499669247cc95..126e6846c8970 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -2058,34 +2058,34 @@ def drop(self, labels, axis=0, level=None, inplace=False, errors='raise'): Examples -------- - >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], - ... [3, 4, np.nan, 1], - ... [np.nan, np.nan, np.nan, 5], - ... [np.nan, 3, np.nan, 4] + >>> df = pd.DataFrame([[1, 2, 3, 4], + ... [5, 6, 7, 8], + ... [9, 1, 2, 3], + ... [4, 5, 6, 7] ... ], ... columns=list('ABCD')) >>> df A B C D - 0 NaN 2.0 NaN 0 - 1 3.0 4.0 NaN 1 - 2 NaN NaN NaN 5 - 3 NaN 3.0 NaN 4 + 0 1 2 3 4 + 1 5 6 7 8 + 2 9 1 2 3 + 3 4 5 6 7 Drop a row by index >>> df.drop([0, 1]) A B C D - 2 NaN NaN NaN 5 - 3 NaN 3.0 NaN 4 + 2 9 1 2 3 + 3 4 5 6 7 Drop columns >>> df.drop(['A', 'B'], axis=1) C D - 0 NaN 0 - 1 NaN 1 - 2 NaN 5 - 3 NaN 4 + 0 3 4 + 1 7 8 + 2 2 3 + 3 6 7 """ inplace = validate_bool_kwarg(inplace, 'inplace') axis = self._get_axis_number(axis) @@ -3559,6 +3559,58 @@ def convert_objects(self, convert_dates=True, convert_numeric=False, Returns ------- filled : %(klass)s + + Examples + -------- + >>> df = pd.DataFrame([[np.nan, 2, np.nan, 0], + ... [3, 4, np.nan, 1], + ... [np.nan, np.nan, np.nan, 5], + ... [np.nan, 3, np.nan, 4]], + ... columns=list('ABCD')) + >>> df + A B C D + 0 NaN 2.0 NaN 0 + 1 3.0 4.0 NaN 1 + 2 NaN NaN NaN 5 + 3 NaN 3.0 NaN 4 + + Replace all NaN elements with 0s. + + >>> df.fillna(0) + A B C D + 0 0.0 2.0 0.0 0 + 1 3.0 4.0 0.0 1 + 2 0.0 0.0 0.0 5 + 3 0.0 3.0 0.0 4 + + We can also propagate non-null values forward or backward. + + >>> df.fillna(method='ffill') + A B C D + 0 NaN 2.0 NaN 0 + 1 3.0 4.0 NaN 1 + 2 3.0 4.0 NaN 5 + 3 3.0 3.0 NaN 4 + + Replace all NaN elements in column 'A', 'B', 'C', and 'D', with 0, 1, + 2, and 3 respectively. + + >>> values = {'A': 0, 'B': 1, 'C': 2, 'D': 3} + >>> df.fillna(value=values) + A B C D + 0 0.0 2.0 2.0 0 + 1 3.0 4.0 2.0 1 + 2 0.0 1.0 2.0 5 + 3 0.0 3.0 2.0 4 + + Only replace the first NaN element. + + >>> df.fillna(value=values, limit=1) + A B C D + 0 0.0 2.0 2.0 0 + 1 3.0 4.0 NaN 1 + 2 NaN 1.0 NaN 5 + 3 NaN 3.0 NaN 4 """) @Appender(_shared_docs['fillna'] % _shared_doc_kwargs)