100 días competentes en Python (análisis de datos) - Día 71: conversión de tipo str/objeto, conversión de casos, alineación de texto, longitud de adquisición, número de ocurrencias, codificación del método de procesamiento de datos de texto de Pandas

inserte la descripción de la imagen aquí

1. Introducción a los tipos de datos de texto

  • objectHay dos tipos de datos de texto de Pandas string, y si una columna de datos contiene texto y datos, se establecerá de forma predeterminada en el tipo de objeto.
  • Antes de pandas1.0, solo había datos de texto y solo el tipo de objeto, y después de la dinastía pandas1.01.0, había un tipo de cadena.
  • Si el tipo no se especifica como cadena, el tipo de texto generalmente es objeto

1) Tipo de introducción

(1) Una columna de datos contiene texto y datos, que por defecto es de tipo objeto:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    
    
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print(df)
print(df.dtypes)

resultado de la operación:
inserte la descripción de la imagen aquí

(2) El tipo de cadena debe especificarse mediante la configuración de dtypeparámetros :

# 方法1 :dtype='string'
df = pd.DataFrame({
    
    'A': ['a', 'b', 'c', 'd']}, dtype='string')
print(df.dtypes)

# 方法2 : dtype=pd.StringDtype()
df = pd.DataFrame({
    
    'A': ['a', 'b', 'c', 'd']}, dtype=pd.StringDtype())
print(df.dtypes)

resultado de la operación:
inserte la descripción de la imagen aquí

2) Tipo de conversión

Método 1: convertir a cadena por tipo

df = pd.Series({
    
    'A': ['a', 'b', 'c', 'd']})
# 转换前
print(df)
print(df.dtypes)
# 转换后
df = df.astype("string")
print(df)
print(df.dtypes)

resultado de la operación:
inserte la descripción de la imagen aquí

Método 2: Selección inteligente del tipo de datos a través de df.convert_dtypes()

import pandas as pd
import numpy as np

df = pd.DataFrame({
    
    
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print('类型转换前')
print(df.dtypes)

df = df.convert_dtypes()  # 智能数据类型选择
print('类型转换后')
print(df.dtypes)

resultado de la operación:
inserte la descripción de la imagen aquí

3) diferencia de tipo

La diferencia entre el tipo de cadena y el tipo de objeto es la siguiente:

  • Los métodos de acceso a cadenas que devuelven una salida numérica siempre devolverán un tipo entero que acepta valores NULL para una cadena, o un int o float para un objeto, dependiendo de la presencia de valores NA
  • Para el tipo de cadena, el método que devuelve una salida booleana devolverá un tipo de datos booleano booleano anulable y el tipo de objeto sigue siendo objeto

Diferencia 1: al contar cadenas

Al contar la cadena s.str.count():

  • Ninguno de los tipos de cadena devuelve NaN, y el dtype es Int64; después de eliminar los valores faltantes a través de dropna(), el dtype también esInt64
  • Ninguno de los tipos de objeto devuelve NaN, y dtpye lo es float64; después de eliminar los valores faltantes a través de dropna(), el dtype esInt64

tipo de cadena:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

resultado de la operación:
inserte la descripción de la imagen aquí

tipo de objeto:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='object')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

resultado de la operación:
inserte la descripción de la imagen aquí

Diferencia 2: al verificar una cadena

Al verificar una cadena a través de str.isdigit():

  • tipo de cadena, devuelve tipo booleano,dtype= booleano, el valor faltante es NA
  • tipo de objeto, aunque el tipo de retorno es booleano,Pero dtype = objeto, Ninguno devuelve Ninguno
import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("string类型:")
print(s.str.isdigit())

s = pd.Series(['小明', '小红', None], dtype='object')
print("object:")
print(s.str.isdigit())

resultado de la operación:
inserte la descripción de la imagen aquí

2. Método integrado de cadenas de Python

La cadena es un tipo de datos común. Los datos de texto y json que encontramos pertenecen a la categoría de cadena. Python tiene muchos métodos integrados para procesar cadenas, lo que nos brinda una gran comodidad para procesar y limpiar datos. Este artículo presentará conversión de mayúsculas y minúsculas, métodos de alineación de texto,

1) Conversión de casos

método ilustrar
cadena.inferior() Convierte todos los caracteres en mayúsculas en cadena a minúsculas
cadena.superior() Convertir letras minúsculas en cadena a mayúsculas
cadena.mayúsculas() escribe en mayúscula el primer carácter de una cadena
cadena.título() Poner en mayúscula la primera letra de cada palabra en una cadena
cadena.intercambiar() flip case en cadena

2) Alineación de texto

método ilustrar
string.bright(ancho) Devuelve una nueva cadena con la cadena original alineada a la izquierda y rellenada con espacios al ancho de la longitud
cadena.rjust(ancho) Devuelve una nueva cadena con la cadena original alineada a la derecha y rellenada con espacios al ancho de la longitud
cadena.center(ancho) Devuelve una nueva cadena con la cadena original centrada y rellenada con espacios al ancho de la longitud

3) Obtener la longitud

método ilustrar
len(cadena) Devuelve la longitud de la cadena.

4) Obtenga el número de ocurrencias

método ilustrar
contar (cadena) Devuelve el número de ocurrencias de cada elemento de cadena.

5) Codificación

método ilustrar
codificar('utf-8') codificación de caracteres, pasando la cadena

3. ¿Cómo utiliza Pandas los métodos integrados?

  • En el proceso de limpieza y análisis de datos diarios, a menudo es necesario procesar datos de tipo cadena. Y pandas tiene Series.strmuchos métodos integrados basados ​​en accesores para procesar cadenas.Después de que las columnas específicas de pandas pasen str, puede usar varios métodos de procesamiento de caracteres comunes de Python y funciones integradas, lo que puede ayudarnos a mejorar en gran medida los datos de cadena. .
  • Pandas .strpuede usar el método incorporado de cadena en el objeto Serie llamándolo (la función de procesamiento de cadena en pandas comienza con str) para operar en una columna en el marco de datos.Esta operación vectorizada mejora la eficiencia del procesamiento.

1) Conversión de casos

método ilustrar
series_obj.str.inferior() Convierte todos los caracteres en mayúsculas en cadena a minúsculas
series_obj.str.superior() Convertir letras minúsculas en cadena a mayúsculas
series_obj.str.capitalizar() escribe en mayúscula el primer carácter de una cadena
series_obj.str.title() Poner en mayúscula la primera letra de cada palabra en una cadena
series_obj.str.swapcase() flip case en cadena

Preparar datos:

import pandas as pd
import numpy as np

series_obj = pd.Series(['A', 'b', 'ABC', 'Abc', 'abc', 'This is abc', np.nan], dtype='string')
print(df)

resultado de la operación:
inserte la descripción de la imagen aquí

1. Convierta todos los caracteres en mayúsculas en una cadena a minúsculas:

series_obj.str.lower()

resultado de la operación:
inserte la descripción de la imagen aquí

2. Convierta letras minúsculas en cadena a mayúsculas:

series_obj.str.upper()

resultado de la operación:
inserte la descripción de la imagen aquí

3. Escriba en mayúscula el primer carácter de una cadena:

series_obj.str.capitalize()

resultado de la operación:
inserte la descripción de la imagen aquí

4. Pon la cuerdaPoner en mayúscula la primera letra de cada palabra(Observe la diferencia con mayúsculas):

series_obj.str.title()

inserte la descripción de la imagen aquí

5. Da la vuelta a la funda en hilo:

series_obj.str.swapcase()

resultado de la operación:
inserte la descripción de la imagen aquí

2) Alineación de texto

método ilustrar
series_obj.str.ljust(ancho) Devuelve una nueva cadena con la cadena original alineada a la izquierda y rellenada con espacios al ancho de la longitud
series_obj.str.rjust(ancho) Devuelve una nueva cadena con la cadena original alineada a la derecha y rellenada con espacios al ancho de la longitud
series_obj.str.center(ancho) Devuelve una nueva cadena con la cadena original alineada en el centro y rellenada con espacios al ancho de la longitud

1. Devuelva una nueva cadena con la cadena original alineada a la izquierda y rellenada con espacios a una longitud de ancho:

# 左对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.ljust(8, fillchar='-')

resultado de la operación:
inserte la descripción de la imagen aquí

2. Devuelva una nueva cadena con la cadena original alineada a la derecha y rellenada con espacios a una longitud de ancho :

# 右对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.rjust(8, fillchar='-')

resultado de la operación:
inserte la descripción de la imagen aquí

3. Devuelva una nueva cadena cuya cadena original esté alineada al centro y rellenada con espacios a una longitud de ancho:

# 居中对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.center(8, fillchar='-')

resultado de la operación:

inserte la descripción de la imagen aquí

3) Obtener la longitud

método ilustrar
series_obj.str.len(cadena) Devuelve la longitud de la cadena.
series_obj.str.len()

resultado de la operación:
inserte la descripción de la imagen aquí

4) Obtenga el número de ocurrencias

método ilustrar
series_obj.str.count(cadena) Devuelve el número de ocurrencias de cada elemento de cadena.

Cuente cuántas veces aparece A, el conteo distingue entre mayúsculas y minúsculas:

series_obj.str.count('A')
series_obj.str.count('a')

resultado de la operación:

inserte la descripción de la imagen aquí

5) Codificación

método ilustrar
series_obj.str.encode('utf-8') codificación de caracteres, pasando la cadena

La codificación de caracteres se establece en utf8:

series_obj.str.encode('utf-8')

inserte la descripción de la imagen aquí

4. Precauciones

1,.strEl descriptor de acceso solo se puede usar en la estructura de datos de la serie.. Además de la variable de columna regular df.col, también puede usar los tipos de índice df.Index y df.columns

2,Asegúrese de que el tipo de objeto al que se accede sea un tipo de cadena str. Si no es necesario astype(str) convertir el tipo primero, de lo contrario se informará un error

3. Algunos métodos no se pueden usar en stringSeries, como: series_obj.str.decode(), porque Series almacena cadenas en lugar de bytes:

series_obj.str.decode('utf-8')

resultado de la operación:

inserte la descripción de la imagen aquí

4.Los accesorios se pueden utilizar con múltiples conexiones. Por ejemplo series_obj.str.lower().str.title(), usando el apilamiento de efectos:

# 先设置全部小写,然后设置首字母大写
series_obj.str.lower().str.title()

resultado de la operación:
inserte la descripción de la imagen aquí

Proxy de proveedor de internet

Python es inseparable de los reptiles. Recientemente, algunos amigos que quieren aprender reptiles me preguntaron dónde encontrar la IP del proxy. El blogger mismo usa una IP de proxy rastreador de alta estabilidad: Shenlong HTTP Proxy (puede hacer clic para averiguar si lo necesita )

introducción al libro

"Tutorial de PyTorch: 21 proyectos para jugar con PyTorch en acción"

inserte la descripción de la imagen aquí

PyTorch es una biblioteca de aprendizaje automático de código abierto basada en la biblioteca Torch, desarrollada principalmente por el laboratorio de investigación de inteligencia artificial de Meta (anteriormente Facebook), y tiene una amplia gama de aplicaciones en los campos del procesamiento del lenguaje natural y la visión artificial. Este libro presenta proyectos introductorios simples y clásicos, que son fáciles de comenzar rápidamente, como el reconocimiento de dígitos MNIST. Los lectores pueden comprender conceptos básicos como conjuntos de datos, modelos y capacitación durante el proceso de finalización de los proyectos. Este libro también presenta algunos modelos prácticos y clásicos, como el modelo R-CNN.A través del estudio de este modelo, los lectores pueden tener una comprensión básica de la tarea de detección de objetivos y tener una cierta comprensión de los principios básicos de la estructura de la red. Además, este libro también tiene una cierta introducción a las redes de confrontación generativas actualmente populares y al aprendizaje por refuerzo, que es conveniente para que los lectores amplíen sus horizontes y capten las direcciones de vanguardia.
Si no desea sortear una lotería, enlace de compra autooperado de JD: https://item.jd.com/13522327.html

Supongo que te gusta

Origin blog.csdn.net/yuan2019035055/article/details/128602503
Recomendado
Clasificación