Pandas
Pandas
Python
Pandas es una herramienta de manipulación de datos de alto nivel desarrollada por Wes
McKinney. Es construido sobre Numpy y permite el análisis de datos que cuenta con las
estructuras de datos que necesitamos para limpiar los datos en bruto y que sean aptos para
el análisis (por ejemplo, tablas). Como Pandas permite realizar tareas importantes, como
alinear datos para su comparación, fusionar conjuntos de datos, gestión de datos perdidos,
etc., se ha convertido en una librería muy importante para procesar datos a alto nivel en
Python (es decir, estadísticas ). Pandas fue diseñada originalmente para gestionar datos
financieros, y como alternativo al uso de hojas de cálculo (es decir, Microsoft Excel).
Los principales tipos de datos que pueden representarse con pandas son:
Datos tabulares con columnas de tipo heterogéneo con etiquetas en columnas y filas.
Series temporales
leer y escribir datos en diferentes formatos: CSV, JSON, Excel, bases SQL y formato HDF5
seleccionar y filtrar de manera sencilla tablas de datos en función de posición, valor o
etiquetas
fusionar y unir datos
transformar datos aplicando funciones tanto en global como por ventanas
manipulación de series temporales
hacer gráficas
En pandas existen tres tipos básicos de objetos todos ellos basados a su vez en Numpy:
Por lo tanto, Pandas nos proporciona las estructuras de datos y funciones necesarias para el
análisis de datos.
Instalar Pandas
Pandas ya esta preinstalado si se usa Google Collaboratory, si va realizar una instalacion en
su computador
PIP
pip install pandas
Conda
Si instalo Anaconda, pandas ya viene preinstalado
Importando Pandas
La libreria Pandas se importa de la siguiente manera
Series
Una serie es el primer tipo de datos de pandas y es muy similar a una matriz NumPy (de
hecho está construida sobre el objeto de matriz NumPy). Lo que diferencia un arreglo
NumPy de una serie, es que una serie puede tener etiquetas en los ejes, lo que significa que
puede ser indexada por una etiqueta, en lugar de solo una ubicación numérica. Tampoco
necesita contener datos numéricos, puede contener cualquier Objeto de Python arbitrario.
Puede convertir una lista, una matriz numpy o un diccionario en una serie, usando el
metodo pd.Series:
Indexacion
La clave para usar una serie es entender su índice. Pandas hace uso de estos nombres o
números de índice al permitir búsquedas rápidas de información (funciona como una tabla
hash o diccionario).
Veamos algunos ejemplos de cómo obtener información de una serie. Vamos a crear dos
series, ser1 y ser2:
# Observe los resultados de los paises que solo estan en una serie y no
en las dos
ser1 + ser2
Germany 4.0
Italy NaN
Japan 8.0
USA 2.0
USSR NaN
dtype: float64
DataFrames
Los DataFrames son la estructura mas importante en pandas y están directamente
inspirados en el lenguaje de programación R. Se puede pensar en un DataFrame como un
conjunto de Series reunidas que comparten el mismo índice. En los DataFrame tenemos la
opción de especificar tanto el index (el nombre de las filas) como columns (el nombre de
las columnas).
df = pd.DataFrame(randn(5,4),
index='A B C D E'.split(),
columns='W X Y Z'.split())
df
W X Y Z
Promedio (mean)
Desviacion estandard (std)
Valor minimo
Valor maximo
Cuartiles (25%, 50% y 75%)
Seleccion y Indexacion
df[['W','Z']]
W Z
A 2.706850 0.503826
B 0.651118 0.605965
C -2.018168 -0.589001
D 0.188695 0.955057
E 0.190794 0.683509
df[['X','W','Z']]
X W Z
Eliminando Columnas
df.drop('new',axis=1) # axis = 0 elimina filas(index) axis = 1 elimina
columnas
W X Y Z
df
W X Y Z
df.drop('E',axis=0)
W X Y Z
df
W X Y Z
# la funcion loc busca por medio de los nombres de los indices y columnas
df.loc['A'] # se selecciona todos los valores de la fila 'A'
W 2.706850
Y 0.907969
Z 0.503826
Name: A, dtype: float64
A 2.706850 0.907969
B 0.651118 -0.848077
df.loc[['B','A'],['Y','W']]
Y W
B -0.848077 0.651118
A 0.907969 2.706850
df
W Y Z
# Esta operacion solo mostrara los valores del dataframe que cumplen la
condicion
# los que no cumplen devuelve el valor NaN
df[df>0]
W Y Z
A 0.907969 0.503826
B -0.848077 0.605965
D -0.933237 0.955057
E 2.605967 0.683509
| en vez de or
& en vez de and
~ en vez de not
Los terminos de busqueda condicional o filtros se entregan al metodo como tipo ‘string’
df
W Y Z
#df[df['W']>0]
df.query('W>0')
W Y Z
#df[df['W']>0]['Y']
df.query('W>0')['Y']
A 0.907969
B -0.848077
D -0.933237
E 2.605967
Name: Y, dtype: float64
# Seleccionar las filas donde 'W' sea mayor que cero
# y de esas filas escoger los valores de las columna 'Y' y 'X'
#df[df['W']>0][['Y','Z']]
df.query('W>0')[['Y','Z']]
Y Z
A 0.907969 0.503826
B -0.848077 0.605965
D -0.933237 0.955057
E 2.605967 0.683509
df
W Y Z
A 2.706850 0.907969 0.503826
States
CA A 2.706850 0.907969 0.503826
States
4 FB Carl 243
5 FB Sarah 350
by_comp = df.groupby("Company")
Company
FB 296.5
GOOG 160.0
MSFT 232.0
Company
FB 296.5
GOOG 160.0
MSFT 232.0
Company
FB 75.660426
GOOG 56.568542
MSFT 152.735065
Company
FB Carl 243
Company
FB Sarah 350
# agrupar por compañia y sumar los elementos que hay excluyendo los NaN
by_comp.count()
Person Sales
Company
FB 2 2
GOOG 2 2
MSFT 2 2
Company
Pivot Tables
La funcionlidad “Pivot_table” es muy utilizada y popular en las conocidas “hojas de
cálculo” tipo, OpenOffice, LibreOffice, Excel, Lotus, etc. Esta funcionalidad nos permite
agrupar, ordenar, calcular datos y manejar datos de una forma muy similar a la que se hace
con las hojas de cálculo. mas informacion
La principal función del “Pivot_table” son las agrupaciones de datos a las que se les suelen
aplicar funciones matemáticas como sumatorios, promedios, etc
Haciendo el Pivot table a mano para obtener el promedio de personas que sobrevivieron por
genero
sex
female 0.742038
male 0.188908
sex
sex
sex
data = {'A':['foo','foo','foo','bar','bar','bar'],
'B':['one','one','two','two','one','one'],
'C':['x','y','x','y','x','y'],
'D':[1,3,2,5,4,1]}
df = pd.DataFrame(data)
df
A B C D
0 foo one x 1
1 foo one y 3
2 foo two x 2
3 bar two y 5
4 bar one x 4
5 bar one y 1
# pivot tables
df.pivot_table(values='D',index=['A', 'B'],columns=['C'])
C x y
A B
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
df2
A B C D
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7
df3
A B C D
8 A8 B8 C8 D8
9 A9 B9 C9 D9
Concatenacion (Concatenation)
Puede usar .concat() y pasar una lista de DataFrames para concatenar juntos:
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7
8 A8 B8 C8 D8
9 A9 B9 C9 D9
10 NaN NaN NaN NaN NaN NaN NaN NaN A10 B10 C10 D10
11 NaN NaN NaN NaN NaN NaN NaN NaN A11 B11 C11 D11
Fusion (Merging)
La función merge() le permite fusionar DataFrames juntos utilizando una lógica similar a
la combinación de Tablas SQL. Por ejemplo:
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K3 A3 B3
right
key C D
0 K0 C0 D0
1 K1 C1 D1
2 K2 C2 D2
3 K3 C3 D3
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
3 K3 A3 B3 C3 D3
Natural join: para mantener solo las filas que coinciden con los marcos de datos,
especifique el argumento how = ‘inner’.
Full outer join: para mantener todas las filas de ambos dataframe, especifique how =
‘OUTER’.
Left outer join: para incluir todas las filas de su dataframe x y solo aquellas de y que
coincidan, especifique how=‘left’.
Right outer join: para incluir todas las filas de su dataframe y y solo aquellas de x que
coincidan, especifique how=‘right’.
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
0 K0 K0 A0 B0
1 K0 K1 A1 B1
2 K1 K0 A2 B2
3 K2 K1 A3 B3
right
key1 key2 C D
0 K0 K0 C0 D0
1 K1 K0 C1 D1
2 K1 K0 C2 D2
3 K2 K0 C3 D3
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A2 B2 C1 D1
2 K1 K0 A2 B2 C2 D2
0 K0 K0 A0 B0 C0 D0
1 K0 K1 A1 B1 NaN NaN
2 K1 K0 A2 B2 C1 D1
3 K1 K0 A2 B2 C2 D2
4 K2 K1 A3 B3 NaN NaN
5 K2 K0 NaN NaN C3 D3
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A2 B2 C1 D1
2 K1 K0 A2 B2 C2 D2
3 K2 K0 NaN NaN C3 D3
0 K0 K0 A0 B0 C0 D0
1 K0 K1 A1 B1 NaN NaN
2 K1 K0 A2 B2 C1 D1
3 K1 K0 A2 B2 C2 D2
4 K2 K1 A3 B3 NaN NaN
Unir (Joining)
Unir (join) es un método conveniente para combinar las columnas de dos DataFrames
potencialmente indexados de forma diferente en un solo DataFrame. Join hace uniones de
índices sobre índices o de índices sobre columnas
K1 A1 B1
K2 A2 B2
right
C D
K0 C0 D0
K2 C2 D2
K3 C3 D3
K0 A0 B0 C0 D0
K1 A1 B1 NaN NaN
K2 A2 B2 C2 D2
K0 C0 D0 A0 B0
K2 C2 D2 A2 B2
K3 C3 D3 NaN NaN
K0 A0 B0 C0 D0
K1 A1 B1 NaN NaN
K2 A2 B2 C2 D2
K3 NaN NaN C3 D3
Datos Categoricos
La busqueda en datos categoricos es mucho mas rapida
Ocupan Menos memoria que si los datos estan como string
Se pueden tener datos categoricos Ordinales
Creacion
# Creacion de una serie de datos categoricos
cate = pd.Series(["manzana", "banano", "corozo", "manzana","pera"],
dtype="category")
cate
0 manzana
1 banano
2 corozo
3 manzana
4 pera
dtype: category
Categories (4, object): [banano, corozo, manzana, pera]
cate.dtypes
CategoricalDtype(categories=['banano', 'corozo', 'manzana', 'pera'],
ordered=False)
cate.describe()
count 5
unique 4
top manzana
freq 2
dtype: object
# Creando primero los datos y luego convirtiendolos en categoricos
df_cate = pd.DataFrame({"Fruta":["manzana", "banano", "corozo",
"manzana","pera"]})
df_cate
Fruta
0 manzana
1 banano
2 corozo
3 manzana
4 pera
0 manzana manzana
1 banano banano
2 corozo corozo
3 manzana manzana
4 pera pera
0 a b
1 b c
2 c c
3 a d
df_cate.dtypes
A category
B category
dtype: object
df_cate.describe()
A B
count 4 4
unique 3 3
top a c
freq 2 2
Categoricos Ordinales
from pandas.api.types import CategoricalDtype
# creacion de dataframe con datos
df_cate = pd.DataFrame({'A': list('abca'), 'B': list('bccd')})
df_cate
A B
0 a b
1 b c
2 c c
3 a d
df_cate.dtypes
A object
B object
dtype: object
# Definicion de los tipos de datos y que estan en orden
df_cate["A"] = df_cate["A"].astype(CategoricalDtype(['a','b','c','d'],
ordered=True))
df_cate
A B
0 a b
1 b c
2 c c
3 a d
df_cate["A"]
0 a
1 b
2 c
3 a
Name: A, dtype: category
Categories (4, object): [a < b < c < d]
# Los datos no tienen que ser strngs para qeu sean categoricos
s = pd.Series([1, 2, 3, 1], dtype="category")
s
0 1
1 2
2 3
3 1
dtype: category
Categories (3, int64): [1, 2, 3]
s = s.cat.set_categories([2, 3, 1], ordered=True)
s
0 1
1 2
2 3
3 1
dtype: category
Categories (3, int64): [2 < 3 < 1]
Datos Faltantes (Missing data)
Métodos para Manejar datos faltantes en pandas:
0 1.0 5.0 1
1 2.0 NaN 2
2 NaN NaN 3
0 1.0 5.0 1
0 1
1 2
2 3
0 1.0 5.0 1
1 2.0 NaN 2
0 1 5 1
1 2 FILL VALUE 2
1 2.0 99.0 2
2 99.0 99.0 3
0 1.0 5.0 1
1 2.0 5.0 2
2 1.5 5.0 3
0 1 444 abc
1 2 555 def
2 3 666 ghi
3 4 444 xyz
Datos Duplicados
Se puede borrar los registros que son exactamente iguales en todos los valores de las
columnas
import pandas as pd
datos = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20,
22, 20], 'job': ['Assistant', 'Manager', 'Clerk', 'Manager']}
df_dup = pd.DataFrame(datos)
df_dup
name age job
0 James 18 Assistant
1 Jason 20 Manager
2 Rogers 22 Clerk
3 Jason 20 Manager
0 James 18 Assistant
1 Jason 20 Manager
2 Rogers 22 Clerk
1 Jason 20 Manager
2 Rogers 22 Clerk
3 Jason 20 Manager
df_dup.drop_duplicates(inplace=True)
df_dup
name age job
0 James 18 Assistant
1 Jason 20 Manager
2 Rogers 22 Clerk
0 James 18 Assistant
1 Jason 20 Manager
2 Rogers 22 Clerk
3 Jason 21 Employee
0 James 18 Assistant
1 Jason 20 Manager
2 Rogers 22 Clerk
Outliers
Una de las formas de eliminar los aoutliers es identificando cual sera el rango en el que
queremos nuestros datos y limitar los datos entre ese rango
edad = titanic['age']
edad
0 22.0
1 38.0
2 26.0
3 35.0
4 35.0
5 NaN
6 54.0
7 2.0
8 27.0
9 14.0
10 4.0
11 58.0
12 20.0
13 39.0
14 14.0
15 55.0
16 2.0
17 NaN
18 31.0
19 NaN
20 35.0
21 34.0
22 15.0
23 28.0
24 8.0
25 38.0
26 NaN
27 19.0
28 NaN
29 NaN
...
861 21.0
862 48.0
863 NaN
864 24.0
865 42.0
866 27.0
867 31.0
868 NaN
869 4.0
870 26.0
871 47.0
872 33.0
873 47.0
874 28.0
875 15.0
876 20.0
877 19.0
878 NaN
879 56.0
880 25.0
881 33.0
882 22.0
883 28.0
884 25.0
885 39.0
886 27.0
887 19.0
888 NaN
889 26.0
890 32.0
Name: age, Length: 891, dtype: float64
# Cual es la edad maxima
edad.max()
80.0
# Cual es la edad Minima
edad.min()
0.42
esto se puede hacer con el metodo .clip(lower = Valor mas bajo, upper = valor
mas alto)
regiment
Dragoons 2 2 4
Nighthawks 2 2 4
Scouts 2 2 4
All 6 6 12
company experience
cavalry rookie 1 1 1 3
veteran 1 1 1 3
infantry rookie 1 1 1 3
veteran 1 1 1 3
All 4 4 4 12
import pandas as pd
# crear un dataframe
df = pd.DataFrame({'col1':[1,2,3,4],'col2':[444,555,666,444],
'col3':['mama ',' papa',' HIJO ','HiJa']})
df.head() # solamente mostrar los primeros elementos del dataframe
col1 col2 col3
0 1 444 mama
1 2 555 papa
2 3 666 HIJO
3 4 444 HiJa
chevrolet
0 18.0 8 307.0 130.0 3504 12.0 70 usa chevelle
malibu
buick
1 15.0 8 350.0 165.0 3693 11.5 70 usa skylark
320
plymouth
2 18.0 8 318.0 150.0 3436 11.0 70 usa
satellite
amc
3 16.0 8 304.0 150.0 3433 12.0 70 usa
rebel sst
ford
4 17.0 8 302.0 140.0 3449 10.5 70 usa
torino
mea 2970.42462
23.514573 5.454774 193.425879 104.469388 15.568090 76.010050
n 3
1613.00000
min 9.000000 3.000000 68.000000 46.000000 8.000000 70.000000
0
2223.75000
25% 17.500000 4.000000 104.250000 75.000000 13.825000 73.000000
0
2803.50000
50% 23.000000 4.000000 148.500000 93.500000 15.500000 76.000000
0
3608.00000
75% 29.000000 8.000000 262.000000 126.000000 17.175000 79.000000
0
5140.00000
max 46.600000 8.000000 455.000000 230.000000 24.800000 82.000000
0
data.describe(include = 'all') # ver todos los datos incluidos los
categoricos
displacem horsepow accelerati model_ye origi nam
mpg cylinders weight
ent er on ar n e
uniqu
NaN NaN NaN NaN NaN NaN NaN 3 305
e
ford
top NaN NaN NaN NaN NaN NaN NaN usa pint
o
Metodos de Estadistica Descriptiva, de medida central, simetria, momentos, etc. para mas
informacion: http://pandas.pydata.org/pandas-
docs/stable/reference/frame.html#computations-descriptive-stats
Ejemplo:
Media
# Media Aritmetica
X.mean()
23.514572864321615
# Media aritmetica en un dataframe
data.mean()
mpg 23.514573
cylinders 5.454774
displacement 193.425879
horsepower 104.469388
weight 2970.424623
acceleration 15.568090
model_year 76.010050
dtype: float64
Mediana
# Mediana
X.median()
23.0
# Mediana en un dataframe
data.median()
mpg 23.0
cylinders 4.0
displacement 148.5
horsepower 93.5
weight 2803.5
acceleration 15.5
model_year 76.0
dtype: float64
Maximo y Minimo
# Maximo
X.max()
46.6
# Maximo en un dataframe
data.max()
mpg 46.6
cylinders 8
displacement 455
horsepower 230
weight 5140
acceleration 24.8
model_year 82
origin usa
name vw rabbit custom
dtype: object
# Minimo
X.min()
9.0
# Minimo en un dataframe
data.min()
mpg 9
cylinders 3
displacement 68
horsepower 46
weight 1613
acceleration 8
model_year 70
origin europe
name amc ambassador brougham
dtype: object
Moda
# Moda
X.mode()
0 13.0
dtype: float64
# Moda en un dataframe
data.mode()
mpg cylinders displacement horsepower weight acceleration model_year origin name
ford
0 13.0 4.0 97.0 150.0 1985 14.5 73.0 usa
pinto
Cuartiles
Medidas de dispersion
Varianza
# Varianza
X.var() #unbiased Normalized by N-1 by default.
61.089610774274405
# Varianza en un dataframe
data.var()
mpg 61.089611
cylinders 2.893415
displacement 10872.199152
horsepower 1481.569393
weight 717140.990526
acceleration 7.604848
model_year 13.672443
dtype: float64
Desviacion Estandard
Coeficiente de Variacion
# Coeficiente de Variacion
X.std()/X.mean()
0.3323889554645019
Medidas de Asimetria
Curtosis
Esta medida determina el grado de concentración que presentan los valores en la región
central de la distribución. Por medio del Coeficiente de Curtosis, podemos identificar si
existe una gran concentración de valores (Leptocúrtica), una concentración normal
(Mesocúrtica) ó una baja concentración (Platicúrtica).
frame.cov()
a b c d e
# Con Numpy
np.cov(frame)
array([[ 0.7710721 , 0.51639576, -0.42821644, ..., -0.23771807,
-0.63698462, 0.44026319],
[ 0.51639576, 1.78416315, -0.17363496, ..., -1.00370658,
-1.14416467, 0.59572484],
[-0.42821644, -0.17363496, 0.49727435, ..., 0.08767001,
0.33921621, -0.06352345],
...,
[-0.23771807, -1.00370658, 0.08767001, ..., 0.64880976,
0.65597959, -0.23257827],
[-0.63698462, -1.14416467, 0.33921621, ..., 0.65597959,
0.90660696, -0.45814778],
[ 0.44026319, 0.59572484, -0.06352345, ..., -0.23257827,
-0.45814778, 0.46902464]])
Correlacion
Metodos:
pearson (predeterminado)
kendall
spearman
Entre Series
frame['a'].corr(frame['b']) # Pearson que es el predeterminado
-0.052592953776030495
frame['a'].corr(frame['b'], method='spearman') # Metodo spearman
-0.04775690375690376
frame['a'].corr(frame['b'], method='kendall') # Metodo Kendall
-0.03213613613613614
# Con Numpy se realiza el coefficiente de Pearson
# realiza la correlacion entre dos vectores
np.corrcoef(frame['a'],frame['b'])
array([[ 1. , -0.05259295],
[-0.05259295, 1. ]])
Dataframe
frame.corr()
a b c d e
# con Numpy
np.corrcoef(frame)
array([[ 1. , -0.58501996, 0.55616525, ..., 0.26806025,
-0.35940809, -0.00452158],
[-0.58501996, 1. , -0.3400534 , ..., 0.11257458,
-0.37590609, -0.58877942],
[ 0.55616525, -0.3400534 , 1. , ..., 0.70442968,
0.13326316, -0.19220235],
...,
[ 0.26806025, 0.11257458, 0.70442968, ..., 1. ,
0.19271014, -0.79265039],
[-0.35940809, -0.37590609, 0.13326316, ..., 0.19271014,
1. , 0.14871875],
[-0.00452158, -0.58877942, -0.19220235, ..., -0.79265039,
0.14871875, 1. ]])
Funciones Agregadas
df.agg(['sum', 'min'])
col1 col2 col3
sum 10 2109
min 1 444
0 1 444 mama
1 2 555 papa
2 3 666 HIJO
3 4 444 HiJa
0 1 444 mama
3 4 444 HiJa
1 2 555 papa
2 3 666 HIJO
df.sort_values(by='col2',ascending=False)
col1 col2 col3
2 3 666 HIJO
1 2 555 papa
0 1 444 mama
3 4 444 HiJa
Metodos de strings
https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html#vectorized-string-
methods
https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#text-string-methods
df
col1 col2 col3
0 1 444 mama
1 2 555 papa
2 3 666 HIJO
3 4 444 HiJa
Transformacion de Variables
Crear variables Dummy: convertir de categoría a númerica
Discretización o Binning: convertir de número a categoría
Columnas Dummy
0 0 1
1 1 0
2 0 1
3 1 0
4 1 0
Discretización o Binning
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html
CSV
Excel
Json
Html
SQL
ID
ID
CSV Output
# Grabar el dataframe como archivo separado por comas
df1.to_csv('./Data/example_out.csv',index=False)
Archivo de texto separado por comas
# Leer archivos separados por comas, extension .txt o sin extension
df1 = pd.read_csv("./Data/supermarkets-commas.txt")
df1
ID Address City State Country Name Employees
Excel
Pandas puede leer y escribir archivos de Excel, tenga en cuenta que esto solo importa datos.
No fórmulas o imágenes, que tengan imágenes o macros pueden hacer que este método
read_excel se bloquee.
Excel Input
# leer un archivo de excel
df2 = pd.read_excel("./Data/supermarkets.xlsx",sheet_name=0) #leer la
primera hoja del archivo
df2
Supermarket Number of
ID Address City State Country
Name Employees
San
0 1 3666 21st St CA 94114 USA Madeira 8
Francisco
San California
2 3 332 Hill St USA Super River 25
Francisco 94114
San
3 4 3995 23rd St CA 94114 USA Ben's Shop 10
Francisco
San
0 1 3666 21st St CA 94114 USA Madeira 8
Francisco
San California
2 3 332 Hill St USA Super River 25
Francisco 94114
San
3 4 3995 23rd St CA 94114 USA Ben's Shop 10
Francisco
Excel Output
# sumar cada elemento del data frame por 4
df2['Number of Employees'] = df2['Number of Employees'].apply(lambda x:
x+4)
df2
Supermarket Number of
ID Address City State Country
Name Employees
San
0 1 3666 21st St CA 94114 USA Madeira 12
Francisco
San California
2 3 332 Hill St USA Super River 29
Francisco 94114
San
3 4 3995 23rd St CA 94114 USA Ben's Shop 14
Francisco
df2.to_excel('./Data/Excel_Sample_out.xlsx',sheet_name='Hoja1')
JSON
Json Input
# los archivos pueden estar en un link de internet
df4 = pd.read_json("http://pythonhow.com/supermarkets.json")
df4
Address City Country Employees ID Name State
Json output
#Para grabar
df4.to_json("./Data/Salida.json")
WEKA (arff)
from scipy.io import arff # libreria para importar archivos de weka
# principalmente importa datos numericos
data = arff.loadarff('./Data/yeast-train.arff')
df5 = pd.DataFrame(data[0])
df5.head()
. Cl Cl Cl Cl Cl Cla Cla Cla Cla Cla
Att Att Att Att Att Att Att Att Att Att
. as as as as as ss1 ss1 ss1 ss1 ss1
1 2 3 4 5 6 7 8 9 10
. s5 s6 s7 s8 s9 0 1 2 3 4
0.0 0.1 0.0 0.0 0.0 -0.1 0.0 0.0 0.0 0.0 .
b' b' b' b' b' b'0 b'0 b'0 b'0 b'0
0 937 397 627 076 838 191 733 055 275 434 .
0' 0' 0' 0' 0' ' ' ' ' '
00 71 74 98 73 56 05 10 23 77 .
-0.0 -0.0 -0.0 -0.0 -0.0 -0.3 0.0 0.0 0.1 -0.0 .
b' b' b' b' b' b'0 b'0 b'1 b'1 b'0
1 227 505 356 654 843 785 382 857 826 555 .
0' 0' 1' 1' 0' ' ' ' ' '
11 04 91 34 16 60 12 70 13 44 .
-0.0 0.0 0.2 0.1 0.1 0.0 -0.0 0.0 -0.0 -0.0 .
b' b' b' b' b' b'0 b'0 b'1 b'1 b'0
2 904 211 087 027 193 417 217 196 638 537 .
0' 0' 0' 0' 0' ' ' ' ' '
07 98 12 52 15 29 28 03 53 56 .
-0.0 0.0 -0.0 0.0 -0.0 -0.0 -0.1 -0.1 -0.1 -0.1 .
b' b' b' b' b' b'0 b'0 b'1 b'1 b'1
3 852 095 132 940 135 307 160 316 654 230 .
0' 0' 0' 0' 0' ' ' ' ' '
35 40 28 63 92 19 62 74 48 53 .
-0.0 -0.0 0.0 -0.0 -0.0 0.0 -0.0 -0.0 -0.1 -0.1 .
b' b' b' b' b' b'0 b'0 b'0 b'0 b'0
4 887 267 020 438 054 043 558 714 590 113 .
0' 0' 0' 0' 0' ' ' ' ' '
65 43 75 19 65 06 65 84 25 48 .
HTML
La función pandas read_html leerá las tablas de una página web y devolverá una lista de
objetos DataFrame:
data =
pd.read_html('http://www.fdic.gov/bank/individual/failed/banklist.html')
data[0]
Acquiring Closing Updated
Bank Name City ST CERT
Institution Date Date
Washington
Royal Savings December February 1,
1 Federal Bank for Chicago IL 30570
Bank 15, 2017 2019
Savings
First-Citizens
Harvest Community January 13, May 18,
8 Pennsville NJ 34951 Bank & Trust
Bank 2017 2017
Company
First-Citizens
First CornerStone November
11 King of Prussia PA 35312 Bank & Trust May 6, 2016
Bank 13, 2018
Company
First-Citizens
North Milwaukee March 11, January 29,
13 Milwaukee WI 20364 Bank & Trust
State Bank 2016 2019
Company
First-Citizens
Capitol City Bank & February January 29,
19 Atlanta GA 33938 Bank & Trust
Trust Company 13, 2015 2019
Company
December January 3,
22 Northern Star Bank Mankato MN 34983 BankVista
19, 2014 2018
Landmark Bank,
Fort June 20, January 29,
29 Valley Bank FL 21793 National
Lauderdale 2014 2019
Association
Pulaski Bank
February 1,
526 ANB Financial, NA Bentonville AR 33901 and Trust May 9, 2008
2019
Company
Liberty Bank
Douglass National January 25, October 26,
528 Kansas City MO 24660 and Trust
Bank 2008 2012
Company
The Citizens
October 4, September
529 Miami Valley Bank Lakeview OH 16848 Banking
2007 12, 2016
Company
Allegheny
Metropolitan February 2, October 27,
531 Pittsburgh PA 35353 Valley Bank of
Savings Bank 2007 2010
Pittsburgh
532 Bank of Ephraim Ephraim UT 1249 Far West Bank June 25, April 9,
2004 2008
February April 9,
535 Dollar Savings Bank Newark NJ 31330 No Acquirer
14, 2004 2008
AmTrade
September September
541 International Bank Atlanta GA 33784 No Acquirer
30, 2002 11, 2006
En Español
Chicago
Universal Federal June 27, October 6,
542 Chicago IL 29355 Community
Savings Bank 2002 2017
Bank
February 7, February 5,
546 NextBank, NA Phoenix AZ 22314 No Acquirer
2002 2015
547 Oakwood Deposit Oakwood OH 8966 The State Bank February 1, October 25,
Bank Co. & Trust 2002 2012
Company
The Security
Bank of Sierra January 18, November
548 Sierra Blanca TX 22002 State Bank of
Blanca 2002 6, 2003
Pecos
Israel Discount
Hamilton Bank, NA January 11, September
549 Miami FL 24382 Bank of New
En Español 2002 21, 2015
York
Southern New
First Alliance Bank February 2, February
553 Manchester NH 34264 Hampshire
& Trust Co. 2001 18, 2003
Bank & Trust
SQL