herramienta de análisis de datos pandas serie de tutoriales (B): a partir de la trama de datos de gran alcance

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.

Aquí Insertar imagen Descripción

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)

Aquí Insertar imagen Descripción

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')

Aquí Insertar imagen Descripció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')

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripció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 ies integerel 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)

Aquí Insertar imagen Descripción

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')

Aquí Insertar imagen Descripció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]])

Aquí Insertar imagen Descripción

consulta de recorrido

for index,row in df.iterrows():
	print(index,': ',row['name'],row['sex'],row['course'],row['grade'])

Aquí Insertar imagen Descripción

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')

Aquí Insertar imagen Descripció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')

Aquí Insertar imagen Descripció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 ndarrayun 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')

Aquí Insertar imagen Descripció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)

Aquí Insertar imagen Descripción

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)

Aquí Insertar imagen Descripción

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)

Aquí Insertar imagen Descripción

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.

Publicado 84 artículos originales · ganado elogios 250 · Vistas de 150.000 +

Supongo que te gusta

Origin blog.csdn.net/ygdxt/article/details/104214096
Recomendado
Clasificación