Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
wiki2:jupyter [2018/12/23 15:46] alfred [Panda data structures] |
wiki2:jupyter [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 22: | Línea 22: | ||
| ''df = pd.read_csv('file.csv', header=2)'' lee el fichero file.csv esquivando las dos primeras líneas. Más parámetros a la hora de leer: | ''df = pd.read_csv('file.csv', header=2)'' lee el fichero file.csv esquivando las dos primeras líneas. Más parámetros a la hora de leer: | ||
| - | * ''indx_col=(0, 2, 3)'', no leerá las columnas 0, 2 ni 3. | + | * ''indx_col=(0, 2, 3)'', indica que las columnas 0, 2 y 3 son índices. |
| * ''parse_dates=[3]'' indica que la columna 3 es fecha. | * ''parse_dates=[3]'' indica que la columna 3 es fecha. | ||
| Línea 39: | Línea 39: | ||
| </code> | </code> | ||
| - | Para agrupar una columna por intervalos de, por ejemplo días, y luego contarlos usaríamos: ''data['columns'].resample('D').count()'' | + | Para agrupar una columna por intervalos de, por ejemplo días, y luego contarlos usaríamos: ''data['columns'].resample('D').count()''. Con 'h' seria para horas. |
| ==== Panda data structures ==== | ==== Panda data structures ==== | ||
| Línea 47: | Línea 47: | ||
| * Multiindex series o dataframe: higher dimensional data | * Multiindex series o dataframe: higher dimensional data | ||
| + | Crear una serie: | ||
| + | <code> | ||
| + | a = pd.Series({'a': 33, 'b': 334}) | ||
| + | </code> | ||
| + | Crear un dataframe: | ||
| + | <code> | ||
| + | # a = previous example 'a' variable | ||
| + | b = pd.Dataframe(pd.dataframe({'age': a, 'test': {'a': 55, 'b': 53}) | ||
| + | </code> | ||
| + | To select rows: | ||
| + | <code> | ||
| + | b.loc('b') | ||
| + | b.loc(['a', 'b']) | ||
| + | </code> | ||
| + | Select by column: | ||
| + | <code> | ||
| + | df.loc(:, ['b']) | ||
| + | </code> | ||
| + | |||
| + | ''iloc'' is another way to select with indexes. Also slicing: ''df.iloc[2:5]'' que es lo mismo que ''df(2:5)'' | ||
| + | |||
| + | También se puede escoger booleanos: ''df > 500'' devolverá una lista de cabecera y true\false. Puede hacerse una consulta algo así: ''daily_crimes(daily_crimes > 500).count()'' que devuelve solo el número que es mayor que 500. Otra forma: ''daily(daily_crimes(daily_crimes > 500 & daily_crimes < 600).count()'' | ||
| + | |||
| + | ''count'' and ''sum'' are other userful functions. | ||
| + | |||
| + | ''crimes = cirmes.set_index(['primary'], append=True)'' añade la columna primary al indice. Es decir añade un level al indice. | ||
| + | ==== Reshaping ==== | ||
| + | |||
| + | * pivot_table (to select just the rows and columns you want) | ||
| + | * stack / unstack (to add more levels to a multiindex) | ||
| + | * groupby (like sql group by) | ||
| + | * resample (for time intervals) | ||
| + | |||
| + | |||
| + | Añadir una columna (occourences) con valores de 1: ''crimes['occourences'] = np.ones(len(crimes))''. Ahora podrías crear un índice quitándote los repetidos con: ''crimes.occourences.groupby(level=(0, 1)).sum()'' | ||
| + | |||
| + | ''fillna(0)'' method llena los valores que son NaN con 0. | ||
| + | |||
| + | Consultar: ''crimes_by_type.loc[:, ['THEFT', 'HOMICIDE']]['2016']''. Mostrará los crímenes theft y homicidio en 2016. Para quitar ruido (porque estarán puestos por hora) los ponemos por día: ''crimes_by_type.loc[:, ['THEFT', 'HOMICIDE']]['2016'].ersample('D').sum().plot()'' | ||
| + | |||
| + | ===== ipywidgets ===== | ||
| + | |||
| + | https://ipywidgets.readthedocs.io | ||
| + | |||
| + | [[https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html|List of widges]] | ||
| + | |||
| + | Are for creating dynamic notebooks. | ||
| + | |||
| + | <code> | ||
| + | from ipywidgets import interact | ||
| + | |||
| + | @interact(crime_type = crimetype.columns) | ||
| + | def plot_cart(crime_type): | ||
| + | crime_by_type.loc[:, crime_type]... | ||
| + | </code> | ||
| ===== Jupyter Notebooks ─ Special cases ===== | ===== Jupyter Notebooks ─ Special cases ===== | ||