Python - Pandas - Análisis de datos(1)

análisis de datos de pandas

prefacio

Vue框架:Aprende trucos de magia Vue
OJ算法系列:del proyecto: explicación detallada
Linux操作系统:del algoritmo de Fenghouqimen-linux
C++11:Tongtianlu-C++11

Una línea para comprobar si Pandas se ha descargado:
pip list
Una línea para descargar:
pip install pandas

Dos estructuras de datos básicas

Serie de matriz unidimensional

Inicialización de matriz:

De forma predeterminada, una matriz son los datos en una fila y el índice es un índice creciente
import pandas as pd

#数组初始化
series1 = pd.Series([1, 'a', [1.1, 1.2], 'string'])

print(series1)

print(series1[3])

índice especifica el índice:

El índice no puede ser 0 1 2, u otros tipos
import numpy as np

series2 = pd.Series([1, 'a', [1.1, 1.2], np.nan], index=['甲', '乙', '丙', '丁'])

print(series2)

print(series2['甲'])

Los diccionarios especifican tanto el índice como el valor:

Una clave en el diccionario corresponde a una fila en la Serie
dictionary = {
    
    '甲':1, '乙':'a', '丙':[123, 456], '丁':np.nan}

series3 = pd.Series(dictionary)

print(series3)

print(series3['丁'])

Array bidimensional DataFrame:

inicialización de columnas:

las columnas son todos los atributos de columna, independientemente de la definición de datos
import pandas as pd
import numpy as np 

#按照行写data
data = [
    ['a', 1, 111],
    ['b', 2, 222],
    ['c', 3, 333]
]
#按照行写columns
columns = ['name', 'class', 'score']

dataframe = pd.DataFrame(data,columns) #dtype=float

print(dataframe)

Inicialización del diccionario:

Una clave en el diccionario corresponde a una columna de datos en el DataFrame. El
índice de datos de la fila en el DataFrame todavía falta en la columna de índice. Si falta
un número en la columna de índice, numpy.NaN se usa para representar vacío
import pandas as pd
import numpy as np 

#按照列写字典
dictionary = {
    
    
    'name' : ['a', 'b', 'c'],
    'class': [1, 2, 3],
    'score': [111, 222, 333]
}

dataframe = pd.DataFrame(dictionary) #dtype=float

print(dataframe)

print(dataframe[['name', 'score']])

Síntesis de series y tramas de datos:

Una **columna** de un DataFrame se puede llenar con una Serie
# data支持多种数据类型

#日期数组
dates = pd.date_range('20130101', periods=4)
#series
series = pd.Series(1, index=list(range(4)), dtype='float32')
#np数组
np_array = np.array([3] * 4, dtype='int32')
#Categorical
categorical = pd.Categorical(["test", "train", "test", "train"])

dataframe1 = pd.DataFrame({
    
    
    'A': 1.,        #可以复用非数组,但不可用数组
    'B': dates,
    'C': series,
    'D': np_array,
    'E': categorical,
    'F': 'foo'
})

print(dataframe1)

Función de entrada básica:

Índice de datos:

  • datos básicos:
import pandas as pd

dataframe = pd.DataFrame({
    
    
    'a' : [1, 2, 3, 4, 5],
    'b' : ['a', 'b', 'c', 'd', 'e'],
    'c' : [2.1, 2.2, 2.3, 2.4, 2.5]
})
print(dataframe)

rebanada:

['clave1', 'clave2', 'clave3', ...]
print(dataframe.a)
#等同于:
print(dataframe['a'])
#多列:
print(dataframe[['b', 'c']])

ubicación:

.loc[a:b, ['key1', 'key2', 'key3', ...]] El
número de líneas comienza desde a y va a b, pero no contiene b
#所有行,c列
print(dataframe.loc[:, ['c']])

#某几行,c列和a列
print(dataframe.loc[0:3, ['c', 'a']])

ubicación:

.iloc[a:b:c, d:e:f]
El número de filas comienza en a y aumenta en c pasos cada vez, menos que b.
El número de columnas comienza en d y aumenta en f pasos cada vez , menos que e

.iloc[a: b:c, [d, e]] Desde la fila a, aumente c pasos cada vez, menos que
la columna b d y e
print(dataframe.iloc[0:1, 0:3:2])       

print(dataframe.iloc[0:4, [0, 2]])
  • iloc presta más atención al índice y no puede especificar directamente la clave, después de todo, empiezo con

Índice de condición:

Una cierta relación de tamaño de valor:

#打印完整行
print(dataframe[dataframe.a > 3])

#打印行中几个值
print(dataframe.loc[dataframe.a > 2, ['b', 'c']])

Es un valor entre:

print(dataframe[dataframe['a'].isin([3, 5])])

Eliminar datos fuera de lugar:

index[] eliminar fila:

#df.index[[1,2,3]],删索引所指的几行
dataframe2.drop(dataframe2.index[[1, 2]])

[] + columna de eliminación de eje:

dataframe2.drop(['a', 'b'], axis = 1)

Eliminar filas con un valor en una columna:

dataframe2[~(dataframe2['a'] == 3)]

Preprocesamiento de datos:

  • Los datos dados son los siguientes:
df1 = pd.DataFrame({
    
    'id': [1,2,3],
                   'a': [11,22,33],
                   'b': [111,222,333],})
df2 = pd.DataFrame({
    
    'id': [4,5,6],
                   'd': [1.1,2.2,3.3]})

costuras concatenadas:

El interior y el exterior de la unión determinan si eliminar la fila o usar NaN para llenar la fila que falta. El
0 y el 1 del eje determinan la clave de fusión o el índice de fusión. 0 fusiona la clave y 1 fusiona el índice.

eje 0 + exterior:

#行上外连,合并键,但不合并index,缺失则NAN
pd.concat([df1, df2], axis=0, join='outer')

eje 0 + interior:

#行上内连,合并键,但不合并index,缺失则删整行
pd.concat([df1, df2], axis=0, join='inner')

eje1 + exterior:

#列上外连,合并index,不合并键,不会出现NaN
pd.concat([df1, df2], axis=1, join='outer')

eje1 + interior:

#列上内连,合并index,不合并键,不会出现NaN
pd.concat([df1, df2], axis=1, join='inner')

fusión de empalme:

axis=1 merge index
merge puede especificar la combinación de claves, no limitada al índice
pd.merge(dataframe1, dataframe2, on = 'id')

deduplicación drop_duplicates():

La deduplicación está dirigida a dos
filas Después de la deduplicación, el índice permanece sin cambios y no es continuo.
  • Los datos son los siguientes:
import pandas as pd

dataframe = pd.DataFrame({
    
    
    'id' : [1, 2, 3, 3, 5],
    'vale' : [1, 2, 3, 3, 5]
})

mantener = 'primero':

  • Mantener el primero en el grupo de repetición
dataframe.drop_duplicates(keep='first')

mantener = 'último':

  • Mantener el último en el grupo de repetición
dataframe.drop_duplicates(keep='last')

mantener = falso:

  • Mantener el primero en el grupo de repetición
dataframe.drop_duplicates(keep=False)

Eliminar NaN:

cualquier modo:

Si una fila contiene un NaN, la fila/columna debe descartarse
#含有NaN的行,整个行就丢弃
dataframe3.dropna(how = 'any', axis=0)

#含有NaN的列,整个列就丢弃
dataframe3.dropna(how = 'any', axis=1)

todos los modos:

Todos los NaN en una fila, esta fila/columna se descarta
#指定行中均为NaN,则丢弃整个行
dataframe3.dropna(how = 'all', axis = 0)

#指定列中均为NaN,则丢弃整个列
dataframe3.dropna(how = 'all', axis = 1)

Rellenar NaN:

llenar():

Si un valor es NaN, se llenará con valor
dataframe3.fillna(value = 0)

llenar:

Rellene según el valor correspondiente de la línea anterior:
dataframe3.fillna(method='ffill', axis = 0)
Rellene según el valor correspondiente de la columna anterior:
dataframe3.fillna(method='ffill', axis = 1)

Supongo que te gusta

Origin blog.csdn.net/buptsd/article/details/129352521
Recomendado
Clasificación