¿Cómo recupero el número de columnas en un marco de datos de Pandas?

184

¿Cómo recupera programáticamente el número de columnas en un marco de datos de pandas? Esperaba algo como:

df.num_columns
usuario1802143
fuente

Respuestas:

305

Al igual que:

import pandas as pd
df = pd.DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

len(df.columns)
3
Juan
fuente
35
plus df.shapeda una tupla con (n_rows, n_columns)
mkln
3
@mkln si publicas df.shape [1] como respuesta, haría +1. Esta es la mejor manera de trabajar con numpy y merece ser una respuesta separada.
Phil Cooper el
hecho. @PhilCooper quizás podrías explicar por qué df.shapees mejor? Supongo que no llama a una función, sino que solo lee el atributo de la memoria.
mkln
113

Alternativa:

df.shape[1]

( df.shape[0]es el número de filas)

mkln
fuente
2
+1 porque me gusta alentar el direccionamiento de objetos numpy y pandas con sintaxis de tipo martix. (df.shape vs len (df.columns)). A decir verdad, si nos fijamos en el descriptor de pandas para la forma, llama a len (df.columns) pero las matrices y matrices numpy las tienen como atributo. las operaciones vectorizadas más eficientes se pueden hacer con syntas regulares de Python en lugar de las operaciones vectorizadas y casi siempre es incorrecto (las operaciones numba / jit están excluidas de esa crítica)
Phil Cooper
26

Si la variable que contiene el marco de datos se llama df, entonces:

len(df.columns)

da el número de columnas.

Y para aquellos que quieren el número de filas:

len(df.index)

Para una tupla que contiene el número de filas y columnas:

df.shape
multigoodverso
fuente
3
¿No len(df)te daría las filas?
Padraic Cunningham
44
@PadraicCunningham pandas tiene tantos accesos directos que son fáciles de olvidar, así que prefiero ignorarlos y usar la lógica principal para resolver las cosas. Puede sacrificar la velocidad de procesamiento a veces, pero valoro mi tiempo de codificación y legibilidad de código más de unos pocos segundos de tiempo de procesamiento. En este caso particular: si aprende que el número de filas se puede calcular con len (df.index), la próxima vez que necesite el número de columnas, es natural hacer len (df.columns).
multigoodverse
0

Esto funcionó para mí len (list (df)).

Tanmay Ghanekar
fuente
De la opinión: Hola, esta publicación no parece proporcionar una respuesta de calidad a la pregunta. Edite su respuesta y mejórela, o simplemente publíquela como comentario.
sɐunıɔ ןɐ qɐp
No hagas eso. Crea una nueva lista, desperdiciando memoria y velocidad.
jmmcd
0

La función df.info () le dará un resultado similar al siguiente. Si está utilizando el método read_csv de Pandas sin parámetro sep o sep con ",".

raw_data = pd.read_csv("a1:\aa2/aaa3/data.csv")
raw_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5144 entries, 0 to 5143
Columns: 145 entries, R_fighter to R_age
AshishSingh007
fuente
0

Hay varias opciones para obtener el número de columna y la información de la columna, como:
verifíquelos.

local_df = pd.DataFrame (np.random.randint (1,12, size = (2,6)), columnas = ['a', 'b', 'c', 'd', 'e', ​​'f ']) 1. local_df.shape [1] -> Tupla de retorno de atributo de forma como (fila y columnas) (0,1).

  1. local_df.info () -> El método info devolverá información detallada sobre el marco de datos y sus columnas, como el recuento de columnas, el tipo de datos de las columnas, el recuento de valores no nulos, el uso de memoria por el marco de datos

  2. len (local_df.columns) -> el atributo columnas devolverá el objeto índice de las columnas del marco de datos y la función len devolverá el total de columnas disponibles.

  3. local_df.head (0) -> el método head con el parámetro 0 devolverá la primera fila de df, que en realidad no es más que el encabezado.

Asumiendo que el número de columnas no es más de 10. Para diversión en bucle: li_count = 0 para x en local_df: li_count = li_count + 1 print (li_count)

AshishSingh007
fuente