From 17be59f0441abd365a15853450263cca9a1d5ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= Date: Thu, 27 May 2021 18:17:45 -0300 Subject: [PATCH 1/5] putting examples on trajectories module --- pymove/utils/trajectories.py | 108 +++++++++++++++++++++++++++++++---- 1 file changed, 98 insertions(+), 10 deletions(-) diff --git a/pymove/utils/trajectories.py b/pymove/utils/trajectories.py index 04415b45..7c5acaee 100644 --- a/pymove/utils/trajectories.py +++ b/pymove/utils/trajectories.py @@ -70,6 +70,17 @@ def read_csv( MoveDataFrameAbstract subclass Trajectory data + Examples + -------- + >>> from pymove.utils.trajectories import read_csv + >>> move_df = read_csv('...geolife_sample.csv') + >>> move_df.head() + lat lon datetime id + 0 39.984094 116.319236 2008-10-23 05:53:05 1 + 1 39.984198 116.319322 2008-10-23 05:53:06 1 + 2 39.984224 116.319402 2008-10-23 05:53:11 1 + 3 39.984211 116.319389 2008-10-23 05:53:16 1 + 4 39.984217 116.319422 2008-10-23 05:53:21 1 """ data = _read_csv( filepath_or_buffer, @@ -95,6 +106,12 @@ def invert_dict(d: Dict) -> Dict: dict inverted dict + Examples + -------- + >>> from pymove.utils.trajectories import invert_dict + >>> traj_dict = {'lat':39.984094, 'lon':116.319236} + >>> invert_dict(traj_dict) + {39.984094: 'lat', 116.319236: 'lon'} """ return {v: k for k, v in d.items()} @@ -125,10 +142,10 @@ def flatten_dict( Examples -------- - >>> d = { 'a': 1, 'b': { 'c': 2, 'd': 3}} - >>> flatten_dict(d) - { 'a': 1, 'b_c': 2, 'b_d': 3 } - + >>> from pymove.utils.trajectories import flatten_dict + >>> traj_dict = {'lat':39.984094, 'lon':116.319236} + >>> flatten_dict(traj_dict, 'x') + {'x_lat': 39.984094, 'x_lon': 116.319236} """ if not isinstance(d, dict): return {parent_key: d} @@ -164,12 +181,28 @@ def flatten_columns(data: DataFrame, columns: List) -> DataFrame: Examples -------- - >>> d = {'a': 1, 'b': {'c': 2, 'd': 3}} - >>>> data = pd.DataFrame({'col1': [1], 'col2': [d]}) - >>>> flatten_columns(data, ['col2']) - col1 col2_b_d col2_a col2_b_c - 0 1 3 1 2 - + >>> from pymove.utils.trajectories import flatten_columns + >>> move_df + lat lon datetime id dict_column + 0 39.984094 116.319236 2008-10-23 05:53:05 1 {'a': 1} + 1 39.984198 116.319322 2008-10-23 05:53:06 1 {'b': 2} + 2 39.984224 116.319402 2008-10-23 05:53:11 1 {'c': 3} + 3 39.984211 116.319389 2008-10-23 05:53:16 1 {'d': 4} + 4 39.984217 116.319422 2008-10-23 05:53:21 1 {'e': 5} + >>> flatten_columns(moveDf, columns = 'dict_column') + lat lon datetime id + 0 39.984094 116.319236 2008-10-23 05:53:05 1 + 1 39.984198 116.319322 2008-10-23 05:53:06 1 + 2 39.984224 116.319402 2008-10-23 05:53:11 1 + 3 39.984211 116.319389 2008-10-23 05:53:16 1 + 4 39.984217 116.319422 2008-10-23 05:53:21 1 + + dict_column_b dict_column_d dict_column_e dict_column_a dict_column_c + 0 NaN NaN NaN 1.0 NaN + 1 2.0 NaN NaN NaN NaN + 2 NaN NaN NaN NaN 3.0 + 3 NaN 4.0 NaN NaN NaN + 4 NaN NaN 5.0 NaN NaN """ data = data.copy() if not isinstance(columns, list): @@ -218,6 +251,16 @@ def shift( ---------- https://stackoverflow.com/questions/30399534/shift-elements-in-a-numpy-array + Examples + -------- + >>> from pymove.utils.trajectories import shift + >>> array = [1,2,3,4,5,6,7] + >>> print(shift(array, 1), type(shift(array, 1))) + [0 1 2 3 4 5 6] + >>> print(shift(array, 2), type(shift(array, 2))) + [0 0 1 2 3 4 5] + >>> print(shift(array, 3), type(shift(array, 3))) + [0 0 0 1 2 3 4] """ result = np.empty_like(arr) if fill_value is None: @@ -254,6 +297,18 @@ def fill_list_with_new_values(original_list: List, new_list_values: List): new_list_values : list. The list from which elements will be copied + Returns + ------- + The original list with the content of a secondary list + + Example + ------- + >>> from pymove.utils.trajectories import fill_list_with_new_values + >>> original_list = [4,3,2,1,0] + >>> new_list = [9,8,7,6,5] + >>> fill_list_with_new_values(original_list, new_list) + >>> print(original_list, type(original_list)) + ['oveD'] [9, 8, 7, 6, 5] """ n = len(new_list_values) original_list[:n] = new_list_values @@ -272,6 +327,16 @@ def object_for_array(object_: Text) -> ndarray: ------- array object converted to a list + + Examples + -------- + >>> from pymove.utils.trajectories import object_for_array + >>> print(object_for_array('lat'), type(object_for_array('lat'))) + ['a'] + >>> print(object_for_array('move'), type(object_for_array('move'))) + ['ov'] + >>> print(object_for_array('moveDf'), type(object_for_array('moveDf'))) + ['oveD'] """ if object_ is None: return object_ @@ -295,6 +360,29 @@ def column_to_array(data: DataFrame, column: Text): column : str Label of data referring to the column for conversion + + Returns + ------- + dataframe + Dataframe with the new column... + + Example + ------- + >>> from pymove.utils.trajectories import column_to_array + >>> move_df + lat lon datetime id list_column + 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1,2] + 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3,4] + 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5,6] + 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7,8] + 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9,10] + >>> column_to_array(moveDf, column = 'list_column') + lat lon datetime id list_column + 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1.0,2.0] + 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3.0,4.0] + 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5.0,6.0] + 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7.0,8.0] + 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9.0,10.0] """ data = data.copy() if column not in data: From 04b62a0089ca37e2057d566edc62fb017ed2a0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= Date: Thu, 27 May 2021 21:31:30 -0300 Subject: [PATCH 2/5] putting examples on trajectories module --- pymove/utils/trajectories.py | 40 +++++++++++++++++------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/pymove/utils/trajectories.py b/pymove/utils/trajectories.py index 7c5acaee..f3da3a74 100644 --- a/pymove/utils/trajectories.py +++ b/pymove/utils/trajectories.py @@ -73,7 +73,7 @@ def read_csv( Examples -------- >>> from pymove.utils.trajectories import read_csv - >>> move_df = read_csv('...geolife_sample.csv') + >>> move_df = read_csv('geolife_sample.csv') >>> move_df.head() lat lon datetime id 0 39.984094 116.319236 2008-10-23 05:53:05 1 @@ -109,9 +109,9 @@ def invert_dict(d: Dict) -> Dict: Examples -------- >>> from pymove.utils.trajectories import invert_dict - >>> traj_dict = {'lat':39.984094, 'lon':116.319236} + >>> traj_dict = {'a': 1, 'b': 2} >>> invert_dict(traj_dict) - {39.984094: 'lat', 116.319236: 'lon'} + {1: 'a, 2: 'b} """ return {v: k for k, v in d.items()} @@ -143,9 +143,9 @@ def flatten_dict( Examples -------- >>> from pymove.utils.trajectories import flatten_dict - >>> traj_dict = {'lat':39.984094, 'lon':116.319236} + >>> d = {'a': 1, 'b': {'c': 2, 'd': 3}} >>> flatten_dict(traj_dict, 'x') - {'x_lat': 39.984094, 'x_lon': 116.319236} + {'x_a': 1, 'x_b_c': 2, 'x_b_d': 3} """ if not isinstance(d, dict): return {parent_key: d} @@ -257,10 +257,10 @@ def shift( >>> array = [1,2,3,4,5,6,7] >>> print(shift(array, 1), type(shift(array, 1))) [0 1 2 3 4 5 6] - >>> print(shift(array, 2), type(shift(array, 2))) - [0 0 1 2 3 4 5] - >>> print(shift(array, 3), type(shift(array, 3))) - [0 0 0 1 2 3 4] + >>> print(shift(array, 0), type(shift(array, 0))) + [1, 2, 3, 4, 5, 6, 7] + >>> print(shift(array, -1), type(shift(array, -1))) + [2 3 4 5 6 7 0] """ result = np.empty_like(arr) if fill_value is None: @@ -304,11 +304,10 @@ def fill_list_with_new_values(original_list: List, new_list_values: List): Example ------- >>> from pymove.utils.trajectories import fill_list_with_new_values - >>> original_list = [4,3,2,1,0] - >>> new_list = [9,8,7,6,5] - >>> fill_list_with_new_values(original_list, new_list) - >>> print(original_list, type(original_list)) - ['oveD'] [9, 8, 7, 6, 5] + >>> lt = [1, 2, 3, 4] + >>> fill_list_with_new_values(lt, ['a','b']) + >>> print(lt, type(lt)) + ['a', 'b', 3, 4] """ n = len(new_list_values) original_list[:n] = new_list_values @@ -331,12 +330,11 @@ def object_for_array(object_: Text) -> ndarray: Examples -------- >>> from pymove.utils.trajectories import object_for_array - >>> print(object_for_array('lat'), type(object_for_array('lat'))) - ['a'] - >>> print(object_for_array('move'), type(object_for_array('move'))) - ['ov'] - >>> print(object_for_array('moveDf'), type(object_for_array('moveDf'))) - ['oveD'] + >>> list_str = '[1,2,3,4,5]' + >>> object_for_array(list_str) + array([1., 2., 3., 4., 5.], dtype=float32) + >>> print(type(object_for_array(list_str))) + """ if object_ is None: return object_ @@ -364,7 +362,7 @@ def column_to_array(data: DataFrame, column: Text): Returns ------- dataframe - Dataframe with the new column... + Dataframe with the selected column converted to list Example ------- From ccda986bd3e95c53e32fa41d726bb19918e4b810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= Date: Thu, 27 May 2021 23:17:06 -0300 Subject: [PATCH 3/5] putting examples on trajectories module --- pymove/utils/trajectories.py | 71 ++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/pymove/utils/trajectories.py b/pymove/utils/trajectories.py index f3da3a74..01fe8575 100644 --- a/pymove/utils/trajectories.py +++ b/pymove/utils/trajectories.py @@ -75,12 +75,12 @@ def read_csv( >>> from pymove.utils.trajectories import read_csv >>> move_df = read_csv('geolife_sample.csv') >>> move_df.head() - lat lon datetime id - 0 39.984094 116.319236 2008-10-23 05:53:05 1 - 1 39.984198 116.319322 2008-10-23 05:53:06 1 - 2 39.984224 116.319402 2008-10-23 05:53:11 1 - 3 39.984211 116.319389 2008-10-23 05:53:16 1 - 4 39.984217 116.319422 2008-10-23 05:53:21 1 + lat lon datetime id + 0 39.984094 116.319236 2008-10-23 05:53:05 1 + 1 39.984198 116.319322 2008-10-23 05:53:06 1 + 2 39.984224 116.319402 2008-10-23 05:53:11 1 + 3 39.984211 116.319389 2008-10-23 05:53:16 1 + 4 39.984217 116.319422 2008-10-23 05:53:21 1 """ data = _read_csv( filepath_or_buffer, @@ -144,8 +144,8 @@ def flatten_dict( -------- >>> from pymove.utils.trajectories import flatten_dict >>> d = {'a': 1, 'b': {'c': 2, 'd': 3}} - >>> flatten_dict(traj_dict, 'x') - {'x_a': 1, 'x_b_c': 2, 'x_b_d': 3} + >>> d + {'a': 1, 'b': {'c': 2, 'd': 3}} """ if not isinstance(d, dict): return {parent_key: d} @@ -183,26 +183,25 @@ def flatten_columns(data: DataFrame, columns: List) -> DataFrame: -------- >>> from pymove.utils.trajectories import flatten_columns >>> move_df - lat lon datetime id dict_column - 0 39.984094 116.319236 2008-10-23 05:53:05 1 {'a': 1} - 1 39.984198 116.319322 2008-10-23 05:53:06 1 {'b': 2} - 2 39.984224 116.319402 2008-10-23 05:53:11 1 {'c': 3} - 3 39.984211 116.319389 2008-10-23 05:53:16 1 {'d': 4} - 4 39.984217 116.319422 2008-10-23 05:53:21 1 {'e': 5} - >>> flatten_columns(moveDf, columns = 'dict_column') - lat lon datetime id - 0 39.984094 116.319236 2008-10-23 05:53:05 1 - 1 39.984198 116.319322 2008-10-23 05:53:06 1 - 2 39.984224 116.319402 2008-10-23 05:53:11 1 - 3 39.984211 116.319389 2008-10-23 05:53:16 1 - 4 39.984217 116.319422 2008-10-23 05:53:21 1 - - dict_column_b dict_column_d dict_column_e dict_column_a dict_column_c - 0 NaN NaN NaN 1.0 NaN - 1 2.0 NaN NaN NaN NaN - 2 NaN NaN NaN NaN 3.0 - 3 NaN 4.0 NaN NaN NaN - 4 NaN NaN 5.0 NaN NaN + lat lon datetime id dict_column + 0 39.984094 116.319236 2008-10-23 05:53:05 1 {'a': 1} + 1 39.984198 116.319322 2008-10-23 05:53:06 1 {'b': 2} + 2 39.984224 116.319402 2008-10-23 05:53:11 1 {'c': 3, 'a': 4} + 3 39.984211 116.319389 2008-10-23 05:53:16 1 {'b': 2} + 4 39.984217 116.319422 2008-10-23 05:53:21 1 {'a': 3, 'c': 2} + >>> flatten_columns(move_df, columns='dict_column') + lat lon datetime id + dict_column_b dict_column_c dict_column_a + 0 39.984094 116.319236 2008-10-23 05:53:05 1\ + NaN NaN 1.0 + 1 39.984198 116.319322 2008-10-23 05:53:06 1\ + 2.0 NaN NaN + 2 39.984224 116.319402 2008-10-23 05:53:11 1\ + NaN 3.0 4.0 + 3 39.984211 116.319389 2008-10-23 05:53:16 1\ + 2.0 NaN NaN + 4 39.984217 116.319422 2008-10-23 05:53:21 1\ + NaN 2.0 3.0 """ data = data.copy() if not isinstance(columns, list): @@ -370,17 +369,17 @@ def column_to_array(data: DataFrame, column: Text): >>> move_df lat lon datetime id list_column 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1,2] - 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3,4] - 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5,6] - 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7,8] - 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9,10] + 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3,4] + 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5,6] + 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7,8] + 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9,10] >>> column_to_array(moveDf, column = 'list_column') lat lon datetime id list_column 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1.0,2.0] - 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3.0,4.0] - 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5.0,6.0] - 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7.0,8.0] - 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9.0,10.0] + 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3.0,4.0] + 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5.0,6.0] + 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7.0,8.0] + 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9.0,10.0] """ data = data.copy() if column not in data: From 65f6ce424468e217e08f030c21920db6b442b66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= Date: Fri, 28 May 2021 07:21:33 -0300 Subject: [PATCH 4/5] putting examples on trajectories module --- pymove/utils/trajectories.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymove/utils/trajectories.py b/pymove/utils/trajectories.py index 01fe8575..e532326b 100644 --- a/pymove/utils/trajectories.py +++ b/pymove/utils/trajectories.py @@ -144,8 +144,8 @@ def flatten_dict( -------- >>> from pymove.utils.trajectories import flatten_dict >>> d = {'a': 1, 'b': {'c': 2, 'd': 3}} - >>> d - {'a': 1, 'b': {'c': 2, 'd': 3}} + >>> flatten_dict(d) + {'a': 1, 'b_c': 2, 'b_d': 3} """ if not isinstance(d, dict): return {parent_key: d} From 74b63ae5648eb5b6db9c04de6e1a2045649078fd Mon Sep 17 00:00:00 2001 From: flych3r Date: Fri, 28 May 2021 11:09:56 -0300 Subject: [PATCH 5/5] return --- pymove/utils/trajectories.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pymove/utils/trajectories.py b/pymove/utils/trajectories.py index 7c5acaee..b9d0f09f 100644 --- a/pymove/utils/trajectories.py +++ b/pymove/utils/trajectories.py @@ -36,7 +36,7 @@ def read_csv( type_: Optional[Text] = TYPE_PANDAS, n_partitions: Optional[int] = 1, **kwargs -): +) -> MoveDataFrame: """ Reads a `csv` file and structures the data. @@ -349,7 +349,7 @@ def object_for_array(object_: Text) -> ndarray: return conv.astype('object_') -def column_to_array(data: DataFrame, column: Text): +def column_to_array(data: DataFrame, column: Text) -> DataFrame: """ Transforms all columns values to list. @@ -377,12 +377,12 @@ def column_to_array(data: DataFrame, column: Text): 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7,8] 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9,10] >>> column_to_array(moveDf, column = 'list_column') - lat lon datetime id list_column - 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1.0,2.0] - 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3.0,4.0] - 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5.0,6.0] - 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7.0,8.0] - 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9.0,10.0] + lat lon datetime id list_column + 0 39.984094 116.319236 2008-10-23 05:53:05 1 [1.0,2.0] + 1 39.984198 116.319322 2008-10-23 05:53:06 1 [3.0,4.0] + 2 39.984224 116.319402 2008-10-23 05:53:11 1 [5.0,6.0] + 3 39.984211 116.319389 2008-10-23 05:53:16 1 [7.0,8.0] + 4 39.984217 116.319422 2008-10-23 05:53:21 1 [9.0,10.0] """ data = data.copy() if column not in data: