Cómo proporcionar una copia reproducible de su DataFrame con to_clipboard()
2018-09-18_reproducible_dataframe.ipynb
- Esta pregunta se marcó anteriormente como un duplicado de Cómo hacer buenos ejemplos de pandas reproducibles. .
- Vaya a esa pregunta si necesita crear datos sintéticos (falsos) para compartir.
- La otra pregunta y las respuestas asociadas cubren cómo crear un marco de datos reproducible.
- No cubren cómo copiar un marco de datos existente
.to_clipboard
, mientras que esta pregunta cubre específicamente.to_clipboard
.
- Esta puede parecer una pregunta obvia. Sin embargo, muchos de los usuarios que hacen preguntas sobre Pandas son nuevos e inexpertos.
- Un componente fundamental al hacer una pregunta es Cómo crear un ejemplo mínimo, completo y verificable , que explica "qué" y "por qué", pero no "cómo".
Por ejemplo, como OP , puedo tener el siguiente marco de datos:
- Para este ejemplo, creé datos sintéticos, que es una opción para crear un conjunto de datos reproducible, pero no está dentro del alcance de esta pregunta.
- Piense en esto, como si hubiera cargado un archivo y solo necesitara compartir una parte para reproducir el error.
import pandas as pd
import numpy as np
from datetime import datetime
from string import ascii_lowercase as al
np.random.seed(365)
rows = 15
cols = 2
data = np.random.randint(0, 10, size=(rows, cols))
index = pd.bdate_range(datetime.today(), freq='d', periods=rows)
df = pd.DataFrame(data=data, index=index, columns=list(al[:cols]))
a b
2020-07-30 2 4
2020-07-31 1 5
2020-08-01 2 2
2020-08-02 9 8
2020-08-03 4 0
2020-08-04 3 3
2020-08-05 7 7
2020-08-06 7 0
2020-08-07 8 4
2020-08-08 3 2
2020-08-09 6 2
2020-08-10 6 8
2020-08-11 9 6
2020-08-12 1 6
2020-08-13 5 7
- El marco de datos podría ir seguido de algún otro código que produzca un error o no produzca el resultado deseado.
Cosas que se deben proporcionar al hacer una pregunta sobre Stack Overflow.
- Una pregunta coherente y bien escrita, como texto formateado.
- El código que produce el error, como texto formateado.
- El seguimiento completo del error, como texto formateado
- Potencialmente, el resultado actual y esperado, como texto formateado o imagen si se trata de un gráfico.
- Los datos, en un formato fácilmente utilizable , como texto formateado.
No agregue sus datos como respuesta a esta pregunta.
Aceptado
Primero: No publicar imágenes de datos, solo texto por favor
Segundo: no pegue datos en la sección de comentarios ni como respuesta, edite su pregunta
Cómo proporcionar rápidamente datos de muestra de un DataFrame de pandas
- Hay más de una manera de responder a esta pregunta. Sin embargo, esta respuesta no pretende ser una solución exhaustiva. Proporciona el método más simple posible.
- Para los curiosos, existen otras soluciones más detalladas en Stack Overflow.
- Proporcione un enlace a un conjunto de datos que se pueda compartir (tal vez en GitHub o un archivo compartido en Google). Esto es particularmente útil si se trata de un conjunto de datos grande y el objetivo es optimizar algún método. El inconveniente es que es posible que los datos ya no estén disponibles en el futuro, lo que reduce el beneficio del puesto.
- Los datos deben proporcionarse en la pregunta, pero pueden ir acompañados de un enlace a un conjunto de datos más extenso.
- No publique solo un enlace o una imagen de los datos.
- Proporcionar la salida de
df.head(10).to_clipboard(sep=',', index=True)
Código:
Proporcionar la salida depandas.DataFrame.to_clipboard
df.head(10).to_clipboard(sep=',', index=True)
- Si tiene un DataFrame de índices múltiples, agregue una nota que indique qué columnas son los índices.
- Nota : cuando se ejecuta la línea de código anterior, no aparecerá ningún resultado.
- El resultado del código ahora está en el portapapeles.
- Pega el portapapeles en
code block
tu pregunta de Stack Overflow
,a,b
2020-07-30,2,4
2020-07-31,1,5
2020-08-01,2,2
2020-08-02,9,8
2020-08-03,4,0
2020-08-04,3,3
2020-08-05,7,7
2020-08-06,7,0
2020-08-07,8,4
2020-08-08,3,2
- Alguien que intente responder a su pregunta puede copiarlo en el portapapeles y seguir:
df = pd.read_clipboard(sep=',')
Ubicaciones del marco de datos distintas de las.head(10)
- Especifique una sección del marco de datos con la
.iloc
propiedad - El siguiente ejemplo selecciona las filas 3 a 11 y todas las columnas.
df.iloc[3:12, :].to_clipboard(sep=',')
Referencias adicionales parapd.read_clipboard
- ¿Especificar columnas de varios niveles usando pd.read_clipboard?
- ¿Cómo se manejan los nombres de columnas que tienen espacios cuando se usa pd.read_clipboard?
- ¿Cómo manejar un índice con nombre personalizado al copiar un marco de datos usando pd.read_clipboard?
Usuarios de Google Colab
.to_clipboard()
no funcionará- Úselo
.to_dict()
para copiar su marco de datos
# if you have a datetime column, convert it to a str
df['date'] = df['date'].astype('str')
# if you have a datetime index, convert it to a str
df.index = df.index.astype('str')
# output to a dict
df.head(10).to_dict(orient='index')
# which will look like
{'2020-07-30': {'a': 2, 'b': 4},
'2020-07-31': {'a': 1, 'b': 5},
'2020-08-01': {'a': 2, 'b': 2},
'2020-08-02': {'a': 9, 'b': 8},
'2020-08-03': {'a': 4, 'b': 0},
'2020-08-04': {'a': 3, 'b': 3},
'2020-08-05': {'a': 7, 'b': 7},
'2020-08-06': {'a': 7, 'b': 0},
'2020-08-07': {'a': 8, 'b': 4},
'2020-08-08': {'a': 3, 'b': 2}}
# copy the previous dict and paste into a code block on SO
# the dict can be converted to a dataframe with
# df = pd.DataFrame.from_dict(d, orient='index') # d is the name of the dict
# convert datatime column or index back to datetime
- Para una respuesta más completa usando
.to_dict()
- Cómo compartir fácilmente un marco de datos de muestra usando df.to_dict()
- Cómo hacer buenos ejemplos de pandas reproducibles
Si hace algo como print(df.head(20))
pegar el resultado en formato de código, entonces podemos usarlo pd.read_clipboard()
para cargar los datos en un marco de datos. Este enfoque funciona para la gran mayoría de las preguntas publicadas bajo la pandas
etiqueta, pero falla estrepitosamente en las preguntas que involucranmultiindex