bibliotecas de terceros de pandas Python

A, el perfil de las pandas

Python Biblioteca de análisis de datos o pandas NumPy se basa en una herramienta, la herramienta para resolver tareas de análisis de datos creadas. Pandas incluye una gran biblioteca y un poco de modelo de datos estándar proporciona las herramientas necesarias para operar de manera eficiente grandes conjuntos de datos. pandas ofrece una serie de funciones y métodos nos permiten manejar rápida y fácilmente los datos. Pronto se dará cuenta de que es uno de los factores importantes que hacen que Python se convierta en un entorno de análisis de datos potente y eficiente.

Pandas es una pitón paquete de análisis de datos, la primera en abril de 2008, fue desarrollado por AQR Capital Management, y al final de 2009 los ingresos salió, no siga desarrollando un enfoque en los paquetes de Python desarrolló equipo de desarrollo PyData y mantenimiento, son PyData parte del proyecto . Pandas y fue desarrollado originalmente como una herramienta de análisis de datos financieros, por lo tanto, el análisis de series temporales pandas proporciona un buen apoyo. nombre pandas de pitón y análisis de datos (análisis de datos) de datos del panel (datos de panel). datos de panel es un término con respecto cubo de la economía, también proporcionado en el panel de tipos de datos pandas.

En segundo lugar, la estructura de datos

  • Series: matriz unidimensional, con matriz unidimensional Numpy son similares. Tanto la estructura de datos básica y la lista de Python es también muy similar, la diferencia es: Lista de los elementos puede ser de diferentes tipos de datos, y sólo permiten la matriz serie, y almacenar el mismo tipo de datos, por lo que un uso más eficiente de la memoria, mejorar la eficiencia operativa.
  • Time-Series: Tiempo-indexado de la serie.
  • Trama de datos: estructura de datos tabular de dos dimensiones. Las muchas características y R data.frame similares. Series trama de datos puede ser entendido como un contenedor. El siguiente contenido principalmente trama de datos basada.
  • Panel: una matriz tridimensional, como se apreciará recipiente trama de datos.

Pandas tienen dos únicas propias estructuras de datos básicos. El lector debe observar que, a pesar de que tiene dos estructuras de datos, ya que todavía es una biblioteca de Python, por lo que, en algunos tipos de datos de Python todavía se aplican aquí, también, se puede también utilizar sus propios tipos de datos definidos por su clase. Pero, pandas y que define dos tipos de datos: Series y trama de datos, que permiten la manipulación de datos más fácil.

Serie

Serie en el tipo pitón () es <clase ''> pandas.core.series.Series. Debido a que la serie es una estructura unidimensional de los datos, podemos crear tales datos directamente a través de la matriz, como este:

import pandas as pd
import numpy as np

series1 = pd.Series([1, 2, 3, 4])
print("series1:\n{}\n".format(series1))

# 这段代码输出如下:
series1:
0 1
1 2
2 3
3 4
dtype: int64

Esta salida como sigue:

  • La última línea de datos de salida es del tipo de la serie, donde los datos son de tipo Int64.
  • Los datos de salida de la segunda columna, la primera columna es los datos de índice, el índice es llamado en los pandas.

Podemos imprimir los datos y el índice de la serie son:

print("series1.values: {}\n".format(series1.values))
print("series1.index: {}\n".format(series1.index))
这两行代码输出如下:
series1.values: [1 2 3 4]
series1.index: RangeIndex(start=0, stop=4, step=1)

Si no se especifica (como arriba), el índice está en la forma [1, N-1] es. Pero también podemos especificar el índice al crear la serie. ¿No se requiere necesariamente un índice entero, puede ser cualquier tipo de datos, tales como cadena. Por ejemplo, estudiamos a siete cartas a siete notas. índice de objeto se correspondientes datos pueden ser adquiridas por ella, por lo que el siguiente ejemplo:

series2 = pd.Series([1, 2, 3, 4, 5],index=["C", "D", "E", "F", "G"])
print("series2:\n{}\n".format(series2))
print("E is {}\n".format(series2["E"]))

# 这段代码输出如下:
series2:
C 1
D 2
E 3
F 4
G 5
dtype: int64
E is 3

Marco de datos

DateFrame pitón en el tipo () es <clase 'pandas.core.frame.DataFrame'>

DateFrame creación Existen tres formas principales:

1) Crea una trama de datos por matriz bidimensional

arr2 = np.array(np.arange(16)).reshape(4,4)
df1 = pd.DataFrame(arr2)
  0   1   2   3
0 0   1   2   3
1 4   5   6   7
2 8   9   10  11
3 12  13  14  15

De esta salida podemos ver, el índice predeterminado y nombres de columna son la forma [0, N-1]. Podemos especificar los nombres de columna y de índice cuando la creación de trama de datos, así:

df2 = pd.DataFrame(np.arange(16).reshape(4,4),columns=["column1", "column2", "column3", "column4"],index=["a", "b", "c", "d"])
print("df2:\n{}\n".format(df2))
# 结果如下
  column1        column2          column3         column4
a 0              1                2               3
b 4              5                6               7
c 8              9                10              11
d 12             13               14              15

También podemos especificar directamente los datos de columna para crear trama de datos:

df3 = pd.DataFrame({"note" : ["C", "D", "E", "F", "G", "A", "B"],"weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
print("df3:\n{}\n".format(df3))
# 这段代码输出如下:
note weekday
0 C Mon
1 D Tue
2 E Wed
3 F Thu
4 G Fri
5 A Sat
6 B Sun

Por favor nota:
diferentes columnas trama de datos puede ser de diferentes tipos de datos
, si la matriz serie para crear trama de datos, cada Serie será la línea, en lugar de uno, por ejemplo:

noteSeries = pd.Series(["C", "D", "E", "F", "G", "A", "B"],index=[1, 2, 3, 4, 5, 6, 7])
weekdaySeries = pd.Series(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],index=[1, 2, 3, 4, 5, 6, 7])
df4 = pd.DataFrame([noteSeries, weekdaySeries])
print("df4:\n{}\n".format(df4))
df4的输出如下:
  1 2 3 4 5 6 7
0 C D E F G A B
1 Mon Tue Wed Thu Fri Sat Sun

2) Crear un marco de diccionario de datos por medio
de dos para crear un diccionario de datos cuadro a continuación es una lista de los diccionarios, un diccionario anidada.

dic2 = {'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12],'d':[13,14,15,16]}
df2 = pd.DataFrame(dic2)
dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df3 = pd.DataFrame(dic3)
结果如下:
  a b c d
0 1 5 9 13
1 2 6 10 14
2 3 7 11 15
3 4 8 12 16
  one two three
a 1 5 9
b 2 6 10
c 3 7 11
d 4 8 12

Diccionario "llave" ( "nombre", "marcas ", "precio") es las columnas de valor trama de datos (nombre), el diccionario cada una "clave" y "valor" es una lista de ellas es que una columna vertical datos de relleno específico.
Dic2 definido anteriormente índice no se determina, por lo tanto, convencionalmente (en la práctica ya formado Series) es un número entero de 0. De los resultados anteriores, es evidente que a cabo, se trata de una estructura de datos bidimensional (ver resultados similares en Excel o MySQL).
Los datos anteriores muestran, el orden de las columnas no está definida, al igual que el orden de las mismas claves en el diccionario, pero en la trama de datos, las columnas en comparación con las claves de diccionario, hay una diferencia obvia es que el orden puede ser predeterminado , por lo que hacer lo siguiente:
dic2_1 = trama de datos (dic2, columnas = [ 'b', 'a', 'c', 'd'])

3) Crear una trama de datos por medio de la trama de datos
DF4 = df3 [[ 'uno' , 'tres']] # es decir, seleccionar uno y tres columnas de df3
s3 = df3 [ 'uno'] # df3 es decir, seleccionar una de la columna

Tres, objetos de índice

Índice de objeto pandas contiene información metadatos que describen eje. Al crear o Series trama de datos, las variables de matriz o de secuencia se convertirán a Index. Se puede obtener mediante la siguiente manera Índice trama de datos objeto para columnas y filas:

series1 = pd.Series([1, 2, 3, 4])
print(series1.index)
代码输出如下:
RangeIndex(start=0, stop=4, step=1)

dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}
df3 = pd.DataFrame(dic3)
print(df3.columns)
print(df3.index)
这两行代码输出如下:
Index(['one', 'two', 'three'], dtype='object')
Index(['a', 'b', 'c', 'd'], dtype='object')

Nota:
Índice no está establecido, y por lo tanto puede contener datos duplicados
valores del índice objeto no se cambia, por lo que puede acceder a la seguridad de los datos
trama de datos proporciona el segundo operador siguiente para acceder a los datos en ella:
LOC: por fila y columna el índice para acceder a los datos
iLoc: para acceder a datos a través del índice de la fila y la columna

print(df3[['one','two']])                 # df3[列索引]
print(df3.loc[['a','b'], ['one','two']])  # loc[行索引,列索引]
print(df3.iloc[[0, 1], 0])                # iloc[行下标,列下标]

第二行代码访问了行索引为0和1,列索引为“note”的元素。第三行代码访问了行下标为0和1(对于df3来说,行索引和行下标刚好是一样的,所以这里都是0和1,但它们却是不同的含义),列下标为0的元素。

   one  two
a    1    5
b    2    6
c    3    7
d    4    8

   one  two
a    1    5
b    2    6

a    1
b    2
Name: one, dtype: int64

2, la alineación automática
si hay dos secuencias, la necesidad de que las dos secuencias aritméticas, entonces no es un índice para reflejar su valor - la alineación automática.

s5 = pd.Series(np.array([10,15,20,30,55,80]),index = ['a','b','c','d','e','f'])
s6 = pd.Series(np.array([12,11,13,15,14,16]),index = ['a','c','g','b','d','f'])
s5 + s6
s5/s6
结果如下
a    22.0
b    30.0
c    31.0
d    44.0
e     NaN
f    96.0
g     NaN
dtype: float64

a    0.833333
b    1.000000
c    1.818182
d    2.142857
e         NaN
f    5.000000
g         NaN
dtype: float64

S5, ya que no hay correspondiente índice g, S6 ningún índice e correspondiente, el cálculo producirá dos datos que faltan valores NaN. Tenga en cuenta que este resultado aritmética para lograr la alineación automática del índice de secuencia de dos, en lugar de una simple suma o las dos secuencias dividido. La alineación de la trama de datos, no sólo el índice de la fila de alineación automática, sino también alinear automáticamente el índice de columna (nombres de las variables)
trama de datos tienen el mismo índice, y trama de datos es promover matriz de dos dimensiones, de modo que no sólo el índice de la fila, sino también hay un índice de la columna, los datos del índice de caja en comparación con la serie de aplicaciones mucho más potente, se colocará esta parte de los datos de la consulta explican.

En cuarto lugar, las operaciones de archivo

biblioteca pandas read_ proporciona un conjunto de funciones para leer varios formatos de archivo, que son los siguientes:
read_csv
read_table
read_fwf
read_clipboard
read_excel
read_hdf
read_html
read_json
read_msgpack
read_pickle
read_sas
read_sql
read_stata
read_feather
NOTA: Los archivos de Excel para ser leído, también es necesario instalar otros una biblioteca: XLRD, para que pueda completar la instalación por el PIP:
sudo instalar XLRD PIP3

A continuación nos fijamos en un ejemplo sencillo de Excel lee:

import pandas as pd
import numpy as np
df1 = pd.read_excel("data/test.xlsx")
print("df1:\n{}\n".format(df1))
这个Excel的内容如下:
df1:
C Mon
0 D Tue
1 E Wed
2 F Thu
3 G Fri
...

Leemos la mirada ejemplo de archivo CSV, archivo CSV de la siguiente manera:
C, Lu
D, mar
E, miércoles
F., Jue
...
lee también es muy sencilla:
DF2 = pd.read_csv ( "Datos / Test1.csv ")
Imprimir (" DF2:. \ n {} \ n -" formato (DF2))

Si el separador no es así, podemos leer el delimitador señalado por medio del archivo, así:
D F3 = pd.read_csv ( "Datos / test2.csv", En septiembre = "|")
Imprimir ( "D F3: \ {n- } \ n" .formato (df3) )

De hecho, read_csvsoportes muy diversos parámetros usados para ajustar los parámetros de lectura, como se muestra en la siguiente tabla:

parámetros explicación
camino Ruta del archivo
SEP o delimitador Separador de campo
encabezamiento El número de filas nombre de la columna, el valor predeterminado es 0 (primera línea)
INDEX_COL El número o fila columna nombres como resultados del índice
nombres lista de nombres de columna de los resultados
skiprows El número de filas que saltar la posición de inicio
na_values En lugar NAsecuencia de valores
comentario Comentario aparte al final del carácter de línea
parse_dates Trate de análisis de datos datetime. El valor por defecto esFalse
keep_date_col Si la columna está conectada a analizar la fecha, conexiones de la columna reservas. El valor por defecto es False.
convertidores convertidor de la columna
dayfirst Al analizar la ambigüedad puede causar la fecha, almacenada en forma interna. El valor por defecto esFalse
data_parser Función se utiliza hasta la fecha de análisis
nfilas El número de líneas para empezar a leer desde el archivo
iterador Devuelve un objeto TextParser de piezas de lectura
tamaño de porción Especifica el tamaño del bloque de lectura
skip_footer El número de filas final del archivo para ser ignorado
verboso Emitir la información para analizar la salida de
codificación codificación de archivos
exprimir Si los datos analizada contiene sólo una columna, y luego un retornoSeries
miles Un millar de número de delimitadores

Nota: UTF-8 unidad de codificación en bytes, el orden de bytes en el que todos los sistemas son una de Yang, sin orden de bytes, por lo que en realidad no requiere de lista de materiales ( "byteorder Marca"). Pero UTF-8 con la lista de materiales que es necesario UTF-8-SIG para proporcionar la lista de materiales.
En pocas palabras, UTF-8-sig es un código de bytes en orden.
Esto sucede cuando los pandas en csv lectura, si hay un error, error de clave de archivo "pandas / index.pyx", línea 137, en pandas.index.IndexEngine.get_loc (pandas / index.c: 4154)
Archivo pandas" /index.pyx "línea 159, en pandas.index.IndexEngine.get_loc (PANDAS / index.c: 4018)
archivo" PANDAS / hashtable.pyx", línea 675, en pandas.hashtable.PyObjectHashTable.get_item (PANDAS / Hashtable .c: 12368)
File "PANDAS / hashtable.pyx", línea 683, en pandas.hashtable.PyObjectHashTable.get_item (PANDAS / hashtable.c: 12322)
este caso, para considerar el uso de UTF-8-sig tal de codificación, es decir, encdoinf = 'UTF-8-sig '
encuentro chino ilegible cuando se puede tratar de cambiar este código

Read_csv descripción de la función detallada, ver aquí: pandas.read_csv

V. 1 datos de la consulta

引入数据集
student = pf.read_csv( '文件路径名' , header = None) (header 表示返回的数据是否有别名)

student.shape    # 查看数据的形状
data.columns     # 查看所有的列名
data.index       # 查看索引
data.dtypes      # 查看每一列数据的类型
data.ndim        # 查看数据的维度

# 查询前几行 或 后几行
student.head(5)
student.tail(5)

# 查询指定的行
student.ix[ ]     # 索引是字符串或数字,多行索引必须使用两个中括号student.ix[[ ]]
student.loc['a']    # 索引字符串
student.iloc[1]   # 索引数字

# 查询指定的列
student[列名] 或 student.列名    #注意当我们提取了一列,Pandas将返回一个series,而不是一个dataframe。
student [['Name' , 'Height' , 'Weight']]    #如果多个列的话,必须使用双重中括号
student.ix [:,['Name' , 'Height' , 'Weight']]    #通过ix查询指定的列

# 查询指定的行和列
student.ix [[0,2,4],['Name' , 'Height' , 'Weight']]

下面通过布尔索引来实现特定信息的查询
student[student['sex'] == F] --- 查询所有性别为女生的信息
student[(student['sex'] == F) & (stuent['age'] > 18)] -- 多条件查询,查询所有性别为女且年龄大于18岁的信息
student[(student['sex'] == F) & (stuent['age'] > 18)] [['name' , 'height']] --查询性别为女,年龄大于18的学生的姓名 和 体重

análisis estadístico V.2

pandas módulo nos proporciona una gran cantidad de estadísticas descriptivas función de mérito, tales como la suma, promedio, mínimo, máximo y que mira el específica estas funciones:
primero generar aleatoriamente tres conjuntos de datos

np.random.seed (1234)
d1 = pd.Series (2 * np.random.normal (tamaño = 100) 3)
d2 = np.random.f (2,4, tamaño = 100)
d3 = np.random .randint (1100, tamaño = 100)

d1.count elementos # no nulos () calculado
d1.min () # mínimo
d1.max () # máximo
d1.idxmin () posición mínima #, similar a la función R which.min
d1.idxmax ( ) # posición del máximo, es similar a la función R which.max
d1.quantile (0.1) # 10% cuantil
d1.sum () # suma
d1.mean () # media
d1.median () # de dígitos
d1.mode () # el modo
d1.var () # varianza
d1.std () # desviación estándar
d1.mad () # media desviación absoluta
d1.skew () # asimetría
d1.kurt () # kurtosis
uno y dos método dimensional descrito anteriormente están disponibles.

d1.describe () # de salida en uno indicadores estadísticos más descriptivos, descirbe método sólo para un bloque de secuencia o los datos, no hay matriz unidimensional de este método

Además de las variables lo anterior estadísticas descriptivas simples, también se proporcionan los coeficientes de correlación continuas (corr) y la solución de la matriz de covarianza (COV). Esto es consistente con el uso del lenguaje R.
df.corr ()

Acerca de cálculo del método de Pearson coeficiente de correlación puede llamar o método o métodos kendell Spearman, Pearson con el método predeterminado.
df.corr ( 'Spearman)

Si desea centrarse en un coeficiente de correlación variable con el resto de las variables, se puede utilizar corrwith, las siguientes partes sólo se preocupan por el coeficiente de correlación con el resto de las variables x1:
df.corrwith (df [ 'x1'])

matriz de covarianza entre las variables numéricas
df.cov ()

transpuesta
df3.T

Ordenar eje
a.sort_index (eje = 1, ascendente = Falso);
en la que representa el eje = 1 ordena todas las columnas, el número de la siguiente ocurre también se mueve. Detrás de la ascendente = False representados en orden descendente, ascendente orden por falta de parámetro que falta.

Los valores se clasifican para la trama de datos
a.sort (columnas = 'x')
que es una x en esta columna, en orden ascendente. Tenga en cuenta que sólo los x columnas y todas las columnas se ordenan por el eje cuando la operación anterior.

5.3 SQL-como operaciones

1) añadir una nueva fila o columna

FUERA:

 

FUERA:

 

Aunque el número de filas de datos d2 sólo tres filas de un marco, d3 después método concat, en 6 filas y 4 columnas, d3 = el número de columnas el número de filas de d1 + d2 es el número de filas el número de columnas, d3 = d1 a d2 es el + secuencia
función concat puede alinear automáticamente dos cuadros de datos variables, la nueva columna no asignado, aparecerá como vacío NaN

--- y para añadir una asignación de columna inexistente creará una nueva columna
d1 [ 'de cuatro'] = 11

2) Eliminar

1) Retirar del d1 --- trama de datos
2) eliminar la trama de datos de línea especificado --- d1.drop ([ 'a' , 'b']), la d1 bloque de datos para borrar un valor de índice de un conjunto de datos y b
3) Retire trama de datos especificado columna --- d1.drop ( 'uno', ' dos', eje = 1), un valor para indicar que el especificado eje columnas o filas de borrado, el valor predeterminado es 0,0 para las líneas de los ejes, las columnas 1
4 ) cuadro de consulta de datos de índice de Boole, las operaciones de datos elimina realmente, volvió a cumplir las condiciones de los datos
d1.drop (d1 [ 'tres'] > 11)

3) para cambiar, modificar los datos de valor

 

4) comprobar para resaltar la agregación, clasificación, mesas múltiples enlaces de operación

4.1) grupo de funciones de agregado
funciones de operación de polimerización puede ser implementado por un módulo de datos pandas GroupBy (): La polimerización de


Si las restricciones no se función de agregado, a continuación, el grupo de polimerización puede calcular datos numéricos, como los estudiantes de bloques de datos con nombre, altura, peso, sexo, edad columna, la columna nombre es una cadena, no se puede calcular.

Eliminar la variable a gota

 

paquetes GroupBy también se pueden proporcionar una pluralidad de variables, tales como los grupos de edad y de género, para calcular la media para la edad y la altura de

 

También se puede realizar cálculos más estadísticas para cada paquete por AGG ([,,])

 

4.2) Clasificación

La clasificación es bastante común en la operación diaria del análisis estadístico, podemos utilizar la orden, y sort_index sort_values ​​lograr el tipo de secuencias de trabajo y tramas de datos:

Intentamos de nuevo con el fin de configuración descendente:

los dos mejores resultados son en realidad ordenados por valor, y los resultados se dan en el mensaje de advertencia que se recomienda sort_values () para ordenar por valor.
Son generalmente ordenados por cuadro de datos de valor, por ejemplo:

4.3) de múltiples uniones de tablas

La conexión se realiza también operaciones de bases de datos muy comunes entre varias tablas, desde el comienzo de las diversas conexiones y combinaciones externas, la unión de palabras clave para lograr a través del lenguaje de base de datos, pandas soy función de fusión más recomendado para la conexión de datos para operar.
La siguiente es una tabla de rendimiento de los estudiantes de la construcción

 

Los estudiantes ahora quieren ver los estudiantes y el logro del estudiante tabla de puntuación para hacer una asociación, ¿cómo funciona?

 

Tenga en cuenta que, por defecto, la función de combinación se lleva a cabo dentro de una conexión entre dos tablas, es decir, los datos de las dos tablas juntas parte de retorno. Como los parámetros se pueden ajustar a través de la conexión, dada la conexión de la izquierda; conector exterior exterior; derecho es una conexión correcta.

 

LEFT JOIN lograr es mantener toda la información de los estudiantes en la mesa, mientras que la tabla de puntuación que se combina con la información, la cantidad puede ser equipado con, por nombre de no se empareja, los resultados se mostrarán como NaN.

Seis valores perdidos

No quiero escribir, y en el enlace que http://www.cnblogs.com/nxld/p/6058591.html

https://www.cnblogs.com/lingLongBaby/p/7147378.html

http://www.cnblogs.com/WoLykos/p/9349581.html

https://www.cnblogs.com/zuizui1204/p/6423069.html

Publicado 33 artículos originales · ganado elogios 4 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/fenglepeng/article/details/104739623
Recomendado
Clasificación