En el artículo de la serie pandas herramienta de análisis de datos de tutoriales (a): Hablando de la serie en: Detalles de los pandas subyacentes estructuras de datos de la serie, hoy para hablar sobre otra estructura de datos trama de datos.
trama de datos de estructura de datos de tabla es mediante un conjunto ordenado de columnas, el diccionario puede ser vista como compuesta de una serie, por ejemplo:
/ | nombre | sexo | curso | grado |
---|---|---|---|---|
0 | Beto | masculino | matemáticas | 99 |
1 | Alicia | hembra | Inglés | 92 |
2 | Joe | masculino | chino | 89 |
3 | Beto | masculino | chino | 88 |
4 | Alicia | hembra | chino | 95 |
5 | Joe | masculino | Inglés | 93 |
6 | Beto | masculino | Inglés | 95 |
7 | Alicia | hembra | matemáticas | 79 |
8 | Joe | masculino | matemáticas | 89 |
Crear una forma común de trama de datos
Las mismas series como trama de datos hay índice, la diferencia es, la serie, además de índice, sólo uno, sino trama de datos por lo general tienen una gran cantidad de columnas, como la anterior trama de datos hay cuatro, y tiene un nombre: nombre, sexo, curso, grado, estos temas nombre, índice de lata para una columna, llamada nombres de columna (índice), por lo tanto, en la trama de datos, prefiero ser llamado índice de fila de índice y el índice de la columna con el fin de distinguir.
La creación de trama de datos hecho, hay N maneras, no hay necesidad de once maestro, después de todo, de uso común, pero dos son tres y que no tienen la intención de crear todo el camino decirlo de nuevo, ya que hay virtuoso de los sospechosos, de acuerdo a su propio entendimiento, que poner estas Creación de una manera unificada dividida en dos categorías: la manera de crear columnas, las líneas creadas por cierto, se habla de cada una de estas dos categorías bajo forma de crear los más representativos.
Trama de datos para crear el ejemplo anterior, el mismo.
Creado por la columna
import pandas as pd
#没有设置行索引 index,取默认值
df = pd.DataFrame({'name':['Bob','Alice','Joe']*3,
'sex':['male','female','male']*3,
'course':['math','english','chinese','chinese','chinese','english','english','math','math'],
'grade':[99,92,89,88,95,93,95,79,89]})
print(df)
Creado por la línea
data = [['Bob','male','math',99],
['Alice','female','english',92],
['Joe','male','chinese',89],
['Bob','male','chinese',88],
['Alice','female','chinese',95],
['Joe','male','english',93],
['Bob','male','english',95],
['Alice','female','math',79],
['Joe','male','math',89]]
columns = ['name','sex','course','grade']
df = pd.DataFrame(data=data,columns=columns)
print(df)
Imprimir los resultados anteriores.
propiedades básicas trama de datos y descripción general
propiedad | significado |
---|---|
df.shape | df número de filas de columnas |
df.index | índice de la fila df |
df.columns | índice de la columna Df de (nombre) |
df.dtypes | Cada tipo de datos de columna df |
df.valuse | valor de objeto df, es un ndarray matriz bidimensional |
print(df.shape,'\n')
print(df.index,'\n')
print(df.columns,'\n')
print(df.dtypes,'\n')
print(df.values,'\n')
Tenga en cuenta que el tipo de datos de cada columna, ya que sus pandas pueden inferir el tipo de datos, grado es por lo tanto 64 en lugar de un objeto de tipo int.
función | efecto |
---|---|
df.head () | Imprimir primera fila n, la línea predeterminada 5 |
df.tail () | Imprimir n filas detrás, la línea predeterminada 5 |
df.info () | Número de líneas impresas, columnas, índice de la columna, el número de columna de valor no nulo, etc. Descripción general de toda la información |
df.describe () | la cantidad de copias, media, la varianza, el mínimo, cuartiles, máximo y lo que la descripción general |
print(df.head(),'\n')
print(df.tail(3),'\n')
print(df.info(),'\n')
print(df.describe(),'\n')
consulta trama de datos
LOC [] y iLoc []
Leer pandas herramienta de análisis de datos serie de tutoriales (a): Hablando de la serie de los lectores deben ser conscientes iloc[]
de i
es integer
el significado de, es decir, iloc[]
sólo a través de la consulta de ubicación, y loc[]
puede remar, consulta índice de la columna, del mismo modo, estas dos funciones ambas consultas, también se pueden añadir, editar.
Para reflejar la diferencia, que primero transformar en un índice de la fila 0-8 1-9 (consulte sección cerrada frontal cerrada, y range()
una abertura frontal y la sección de cierre):
df.index = range(1,10)
Supongamos que queremos completar una tarea: las calificaciones de matemáticas de Bob en 100.
Con loc[]
la realización de las siguientes:
df.loc[1,'grade'] = 100
print(df,'\n')
Y el uso iloc[]
, el código correspondiente es el siguiente:
df.iloc[0,3] = 100
print(df,'\n')
iloc[]
Se basa, y donde el índice de consultas consecutivas, índice de la columna de poca relación, y esta es la razón por la que modifique la línea de antemano del índice, para facilitar la comparación iloc[]
y loc[]
la información en el primer parámetro.
Este punto dos consultas son consultas, de hecho, loc[]
y iloc[]
también es compatible con las investigaciones de bloque, código de ejemplo como sigue:
print(df.loc[[1,3,9],['name','grade']],'\n')
print(df.iloc[[0,2,8],[0,3]])
consulta de recorrido
for index,row in df.iterrows():
print(index,': ',row['name'],row['sex'],row['course'],row['grade'])
Las relaciones con la serie
Puede crear trama de datos por serie:
names = pd.Series(['Bob','Alice','Joe']*3)
sexs = pd.Series(['male','female','male']*3)
courses = pd.Series(['math','english','chinese','chinese','chinese','english','english','math','math'])
grades = pd.Series([99,92,89,88,95,93,95,79,89])
df = pd.DataFrame({'name':names,'sex':sexs,'course':courses,'grade':grades})
El resultado se imprime al principio del artículo que trama de datos, que puede dividirse para crear una forma de crear una columna de en medio, pero no habló sobre comúnmente por encima de esa manera.
Serie se pueden obtener por la trama de datos DF [Nombre de columna] por:
print(df['name'],type(df['name']),'\n')
En consecuencia, todas las series de operaciones para df['name']
:
print(df['name'].values,type(df['name'].values),'\n')
print(df['name'].unique(),type(df['name'].unique()),'\n')
Estoy aquí para incorrecto correcto con mi último artículo en: series.values o series.unique () no devuelve la lista, aunque los resultados de impresión como una lista (por la __str__()
función está sobrecargado), pero en realidad se trata de ndarray
un objeto una lista similar de la matriz, se puede .tolist()
convertir la lista.
print(df['name'].values.tolist(),type(df['name'].values.tolist()),'\n')
print(df['name'].unique().tolist(),type(df['name'].unique().tolist()),'\n')
serie, dijo que la última falta una operación importante apply()
: los datos para el procesamiento de la columna, se puede usar expresiones lambda como parámetros, también se puede utilizar el nombre de la función funciones ya definidas (sin cinta ()
) como un parámetro, por ejemplo, hacemos todo la realización personal de cada curso de más o menos 10 minutos:
# lambda 表达式适用于比较简单的处理
df['grade'] = df['grade'].apply(lambda x:x-10)
print(df,'\n')
# 定义函数适用于比较复杂的处理,这里仅作示例
def operate(x):
return x+10
df['grade'] = df['grade'].apply(operate)
print(df)
Tenga en cuenta que apply()
la función es el valor de retorno, y es utilizar df['grade']
la recepción en lugar de df, de lo contrario toda la trama de datos dejando sólo el grado de esta columna.
Nuevas filas o columnas Eliminación
Agregar / Eliminar filas o columnas menos métodos de enumeración, y aquí sólo dije iniciado varios de uso común.
Eliminar fila / columna mediante drop()
la función completa a:
# drop() 的第一个参数是行索引或者列索引
# axis = 0 删除行
df.drop([0,7,8],axis=0,inplace=True) # 删除所有人的数学成绩
# axis = 0 删除列
df.drop(['sex'],axis=1,inplace=True) # 删除所有人的性别信息
print(df)
Y la serie como una nueva fila está disponible set_value()
, at[]
siloc[]
existe el índice de la fila, se modifica, o es nuevo, las siguientes tres líneas, cada línea el mismo efecto, se modifican puntuación de Inglés de Alice de 100:
# 不一定非得要列表,只要是可迭代对象即可
df.loc[1] = ['Alice', 'english', 100]
df.at[1] = ['Alice', 'english', 100]
# set_value 会在将来被舍弃
df.set_value(1, df.columns, ['Alice', 'english', 100], takeable=False)
Añadir una lata df[列名]=可迭代对象
o df[:,列名]=可迭代对象
aplicado a la tarea de conducción, tales como nuevos niveles de rendimiento, no consiguen 60 puntos o menos, bueno como 60-89, preferiblemente 90-100 de:
level = []
for grade in df['grade'].values.tolist():
if grade<60:
level.append('不及格')
elif grade>=60 and grade<90:
level.append('良')
else:
level.append('优')
df['level'] = level
print(df)
Por lo tanto, pandas en dos estructuras de datos básicos terminados, los próximos pandas de pozo para hablar acerca de la lectura y escritura de archivos en una variedad de funciones.