preloader

Ejercicio - Fechas y Horas - Solución

Índice de contenido

Ejercicio

1. Descarga los datos de https://archive.ics.uci.edu/ml/machine-learning-databases/00271/

2. Carga los datos anteriores en un dataframe correctamente formateado. Debe quedar algo así:

Captura%20de%20pantalla%20de%202021-01-04%2009-09-06.png

3. Crea cuatro nuevas columnas:

- 'Extracted_start_date', que contendrá la fecha extraída de la columna 'Start time'.
- 'Extracted_start_time', que contendrá la hora extraída de la columna 'Start time'.	
- 'Extracted_end_date', que contendrá la fecha extraída de la columna 'End time'.	
- 'Extracted_end_time', que contendrá la hora extraída de la columna 'End time'.

El dataframe resultante debe quedar de esta manera:

Captura%20de%20pantalla%20de%202021-01-04%2009-08-29.png

Solución

python
import pandas as pd
python
df = pd.read_csv("OrdonezA_ADLs.txt", sep="\t", skiprows = [1], index_col = None)
df.reset_index(inplace=True)
df

level_0level_1level_2Start timeEnd timeActivityUnnamed: 3
02011-11-28 02:27:59NaN2011-11-28 10:18:11NaNSleepingNaNNaN
12011-11-28 10:21:24NaN2011-11-28 10:23:36NaNToiletingNaNNaN
22011-11-28 10:25:44NaN2011-11-28 10:33:00NaNShoweringNaNNaN
32011-11-28 10:34:23NaN2011-11-28 10:43:00NaNBreakfastNaNNaN
42011-11-28 10:49:48NaN2011-11-28 10:51:13NaNGroomingNaNNaN
........................
2432011-12-11 12:32:49NaN2011-12-11 14:26:18NaNSpare_Time/TVNaNNaN
2442011-12-11 14:34:12NaN2011-12-11 15:26:17NaNLunchNaNNaN
2452011-12-11 15:28:59NaN2011-12-11 15:30:14NaNToiletingNaNNaN
2462011-12-11 15:41:34NaN2011-12-11 15:43:30NaNGroomingNaNNaN
2472011-12-11 15:43:51NaN2011-12-11 21:41:48NaNSpare_Time/TVNaNNaN

248 rows × 7 columns

python
df.columns
Index(['level_0', 'level_1', 'level_2', 'Start time          ',
       'End time            ', 'Activity', 'Unnamed: 3'],
      dtype='object')
python
colnames = df.columns.tolist()
colnames
['level_0',
 'level_1',
 'level_2',
 'Start time          ',
 'End time            ',
 'Activity',
 'Unnamed: 3']
python
cols_to_remove = list()

for name in colnames:
    if name.startswith("level"):
        cols_to_remove.append(name)
        
cols_to_remove    
['level_0', 'level_1', 'level_2']
python
# Forma extendida
clean_colnames = list()
for name in colnames:
    if name not in cols_to_remove:
        clean_colnames.append(name)
clean_colnames
['Start time          ', 'End time            ', 'Activity', 'Unnamed: 3']
python
# Forma condensada
clean_colnames = [name for name in colnames if name not in cols_to_remove]
clean_colnames
['Start time          ', 'End time            ', 'Activity', 'Unnamed: 3']
python
clean_colnames.remove("Unnamed: 3")
clean_colnames
['Start time          ', 'End time            ', 'Activity']
python
cadena1 = 'Start time          '
python
cadena1.rstrip()
'Start time'
python
clean_colnames = [name.rstrip() for name in clean_colnames]
clean_colnames
['Start time', 'End time', 'Activity']
python
df.dropna(axis = 1, how="all", inplace=True)
df

level_0level_2End time
02011-11-28 02:27:592011-11-28 10:18:11Sleeping
12011-11-28 10:21:242011-11-28 10:23:36Toileting
22011-11-28 10:25:442011-11-28 10:33:00Showering
32011-11-28 10:34:232011-11-28 10:43:00Breakfast
42011-11-28 10:49:482011-11-28 10:51:13Grooming
............
2432011-12-11 12:32:492011-12-11 14:26:18Spare_Time/TV
2442011-12-11 14:34:122011-12-11 15:26:17Lunch
2452011-12-11 15:28:592011-12-11 15:30:14Toileting
2462011-12-11 15:41:342011-12-11 15:43:30Grooming
2472011-12-11 15:43:512011-12-11 21:41:48Spare_Time/TV

248 rows × 3 columns

python
df.columns = clean_colnames
df

Start timeEnd timeActivity
02011-11-28 02:27:592011-11-28 10:18:11Sleeping
12011-11-28 10:21:242011-11-28 10:23:36Toileting
22011-11-28 10:25:442011-11-28 10:33:00Showering
32011-11-28 10:34:232011-11-28 10:43:00Breakfast
42011-11-28 10:49:482011-11-28 10:51:13Grooming
............
2432011-12-11 12:32:492011-12-11 14:26:18Spare_Time/TV
2442011-12-11 14:34:122011-12-11 15:26:17Lunch
2452011-12-11 15:28:592011-12-11 15:30:14Toileting
2462011-12-11 15:41:342011-12-11 15:43:30Grooming
2472011-12-11 15:43:512011-12-11 21:41:48Spare_Time/TV

248 rows × 3 columns

python
df.dtypes
Start time    object
End time      object
Activity      object
dtype: object
python
df['Start time'] = pd.to_datetime(df['Start time'])
df['End time'] = pd.to_datetime(df['End time'])
df.dtypes
Start time    datetime64[ns]
End time      datetime64[ns]
Activity              object
dtype: object
python
df['Extracted_start_date'] = df['Start time'].dt.date
df['Extracted_start_time'] = df['Start time'].dt.time
df

Start timeEnd timeActivityExtracted_start_dateExtracted_start_time
02011-11-28 02:27:592011-11-28 10:18:11Sleeping2011-11-2802:27:59
12011-11-28 10:21:242011-11-28 10:23:36Toileting2011-11-2810:21:24
22011-11-28 10:25:442011-11-28 10:33:00Showering2011-11-2810:25:44
32011-11-28 10:34:232011-11-28 10:43:00Breakfast2011-11-2810:34:23
42011-11-28 10:49:482011-11-28 10:51:13Grooming2011-11-2810:49:48
..................
2432011-12-11 12:32:492011-12-11 14:26:18Spare_Time/TV2011-12-1112:32:49
2442011-12-11 14:34:122011-12-11 15:26:17Lunch2011-12-1114:34:12
2452011-12-11 15:28:592011-12-11 15:30:14Toileting2011-12-1115:28:59
2462011-12-11 15:41:342011-12-11 15:43:30Grooming2011-12-1115:41:34
2472011-12-11 15:43:512011-12-11 21:41:48Spare_Time/TV2011-12-1115:43:51

248 rows × 5 columns

python
df['Extracted_end_date'] = df['End time'].dt.date
df['Extracted_end_time'] = df['End time'].dt.time
df

Start timeEnd timeActivityExtracted_start_dateExtracted_start_timeExtracted_end_dateExtracted_end_time
02011-11-28 02:27:592011-11-28 10:18:11Sleeping2011-11-2802:27:592011-11-2810:18:11
12011-11-28 10:21:242011-11-28 10:23:36Toileting2011-11-2810:21:242011-11-2810:23:36
22011-11-28 10:25:442011-11-28 10:33:00Showering2011-11-2810:25:442011-11-2810:33:00
32011-11-28 10:34:232011-11-28 10:43:00Breakfast2011-11-2810:34:232011-11-2810:43:00
42011-11-28 10:49:482011-11-28 10:51:13Grooming2011-11-2810:49:482011-11-2810:51:13
........................
2432011-12-11 12:32:492011-12-11 14:26:18Spare_Time/TV2011-12-1112:32:492011-12-1114:26:18
2442011-12-11 14:34:122011-12-11 15:26:17Lunch2011-12-1114:34:122011-12-1115:26:17
2452011-12-11 15:28:592011-12-11 15:30:14Toileting2011-12-1115:28:592011-12-1115:30:14
2462011-12-11 15:41:342011-12-11 15:43:30Grooming2011-12-1115:41:342011-12-1115:43:30
2472011-12-11 15:43:512011-12-11 21:41:48Spare_Time/TV2011-12-1115:43:512011-12-1121:41:48

248 rows × 7 columns

python
df.drop(columns = ["Start time", "End time"], inplace=True)
df

ActivityExtracted_start_dateExtracted_start_timeExtracted_end_dateExtracted_end_time
0Sleeping2011-11-2802:27:592011-11-2810:18:11
1Toileting2011-11-2810:21:242011-11-2810:23:36
2Showering2011-11-2810:25:442011-11-2810:33:00
3Breakfast2011-11-2810:34:232011-11-2810:43:00
4Grooming2011-11-2810:49:482011-11-2810:51:13
..................
243Spare_Time/TV2011-12-1112:32:492011-12-1114:26:18
244Lunch2011-12-1114:34:122011-12-1115:26:17
245Toileting2011-12-1115:28:592011-12-1115:30:14
246Grooming2011-12-1115:41:342011-12-1115:43:30
247Spare_Time/TV2011-12-1115:43:512011-12-1121:41:48

248 rows × 5 columns

comments powered by Disqus