熊猫:如何使用df.to_dict()轻松共享示例数据帧?

熊猫:如何使用df.to_dict()轻松共享示例数据帧?,第1张

熊猫:如何使用df.to_dict()轻松共享示例数据帧? 答案:

在许多情况下,使用with方法

df.to_dict()
将完美地完成工作!这是两种情况:

情况1: 您已经从本地来源使用Python构建或加载了一个数据框

情况2: 您在另一个应用程序(如Excel)中有一个表


细节:

情况1: 您已经从本地源构建或加载了数据框

假设您有一个名为的熊猫数据框

df

  1. df.to_dict()
    在您的控制台或编辑器中运行,以及
  2. 复制格式化为字典的输出,然后
  3. 将内容粘贴
    pd.Dataframe(<output>)
    并包含在您现在可复制的代码段中。

情况2: 您在另一个应用程序(如Excel)中有一个表

根据源和分隔符(如

(',', ';' '\s+')
后者在哪里表示空格),您可以简单地:

  1. Ctrl+C
    内容
  2. df=pd.read_clipboard(sep='\s+')
    在您的控制台或编辑器中运行,以及
  3. 运行
    df.to_dict()
    ,并
  4. 输出包括
    df=pd.Dataframe(<output>)

在这种情况下,问题的开始看起来像这样:

import pandas as pddf = pd.Dataframe({0: {0: 0.25474768796402636, 1: 0.5792136563952824, 2: 0.5950396800676201},        1: {0: 0.9071073567355232, 1: 0.1657288354283053, 2: 0.4962367707789421},        2: {0: 0.7440601352930207, 1: 0.7755487356392468, 2: 0.5230707257648775}})

当然,这对于较大的数据帧会有些笨拙。但是很多时候,所有想回答您的问题的人都是您真实数据的一小部分,以考虑您的数据结构。

您可以通过两种方式处理较大的数据帧:
  1. 运行
    df.head(20).to_dict()
    只包括第一个
    20 rows
  2. 更改您的字典格式,例如,使用
    df.to_dict('split')
    ((除了之外还有其他选项
    'split'
    )将输出调整为需要更少行的字典。

这是一个使用虹膜数据集的示例,此外还有可从plotly
express获得的其他位置。

如果您只是运行:

import plotly.express as pximport pandas as pddf = px.data.iris()df.to_dict()

这将产生近1000行的输出,并且作为可重现的样本不太实用。但是,如果包括在内

.head(25)
,您将获得:

{'sepal_length': {0: 5.1, 1: 4.9, 2: 4.7, 3: 4.6, 4: 5.0, 5: 5.4, 6: 4.6, 7: 5.0, 8: 4.4, 9: 4.9}, 'sepal_width': {0: 3.5, 1: 3.0, 2: 3.2, 3: 3.1, 4: 3.6, 5: 3.9, 6: 3.4, 7: 3.4, 8: 2.9, 9: 3.1}, 'petal_length': {0: 1.4, 1: 1.4, 2: 1.3, 3: 1.5, 4: 1.4, 5: 1.7, 6: 1.4, 7: 1.5, 8: 1.4, 9: 1.5}, 'petal_width': {0: 0.2, 1: 0.2, 2: 0.2, 3: 0.2, 4: 0.2, 5: 0.4, 6: 0.3, 7: 0.2, 8: 0.2, 9: 0.1}, 'species': {0: 'setosa', 1: 'setosa', 2: 'setosa', 3: 'setosa', 4: 'setosa', 5: 'setosa', 6: 'setosa', 7: 'setosa', 8: 'setosa', 9: 'setosa'}, 'species_id': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}}

现在我们到了某个地方。但是,根据数据的结构和内容,这可能无法以令人满意的方式涵盖内容的复杂性。但是你可以包括 _ 更多的数据 在 _较少的线路 通过包括

to_dict('split')
如下:

import plotly.express as pxdf = px.data.iris().head(10)df.to_dict('split')

现在,您的输出将如下所示:

{'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 'columns': ['sepal_length',  'sepal_width',  'petal_length',  'petal_width',  'species',  'species_id'], 'data': [[5.1, 3.5, 1.4, 0.2, 'setosa', 1],  [4.9, 3.0, 1.4, 0.2, 'setosa', 1],  [4.7, 3.2, 1.3, 0.2, 'setosa', 1],  [4.6, 3.1, 1.5, 0.2, 'setosa', 1],  [5.0, 3.6, 1.4, 0.2, 'setosa', 1],  [5.4, 3.9, 1.7, 0.4, 'setosa', 1],  [4.6, 3.4, 1.4, 0.3, 'setosa', 1],  [5.0, 3.4, 1.5, 0.2, 'setosa', 1],  [4.4, 2.9, 1.4, 0.2, 'setosa', 1],  [4.9, 3.1, 1.5, 0.1, 'setosa', 1]]}

现在,您可以轻松增加数量,

.head(10)
而不会使您的问题过于混乱。但是有一个小缺点。现在,您不再可以直接在中使用输入
pd.Dataframe
。但是,如果您包括一些关于规格的说明,那将
index,column, and data
很好。因此,对于此特定数据集,我的首选方法是:

import pandas as pdimport plotly.express as pxsample = {'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],  'columns': ['sepal_length',   'sepal_width',   'petal_length',   'petal_width',   'species',   'species_id'],  'data': [[5.1, 3.5, 1.4, 0.2, 'setosa', 1],   [4.9, 3.0, 1.4, 0.2, 'setosa', 1],   [4.7, 3.2, 1.3, 0.2, 'setosa', 1],   [4.6, 3.1, 1.5, 0.2, 'setosa', 1],   [5.0, 3.6, 1.4, 0.2, 'setosa', 1],   [5.4, 3.9, 1.7, 0.4, 'setosa', 1],   [4.6, 3.4, 1.4, 0.3, 'setosa', 1],   [5.0, 3.4, 1.5, 0.2, 'setosa', 1],   [4.4, 2.9, 1.4, 0.2, 'setosa', 1],   [4.9, 3.1, 1.5, 0.1, 'setosa', 1],   [5.4, 3.7, 1.5, 0.2, 'setosa', 1],   [4.8, 3.4, 1.6, 0.2, 'setosa', 1],   [4.8, 3.0, 1.4, 0.1, 'setosa', 1],   [4.3, 3.0, 1.1, 0.1, 'setosa', 1],   [5.8, 4.0, 1.2, 0.2, 'setosa', 1]]}df = pd.Dataframe(index=sample['index'], columns=sample['columns'], data=sample['data'])df

现在,您可以使用此数据框:

    sepal_length  sepal_width  petal_length  petal_width species  species_id0 5.1          3.51.4          0.2  setosa11 4.9          3.01.4          0.2  setosa12 4.7          3.21.3          0.2  setosa13 4.6          3.11.5          0.2  setosa14 5.0          3.61.4          0.2  setosa15 5.4          3.91.7          0.4  setosa16 4.6          3.41.4          0.3  setosa17 5.0          3.41.5          0.2  setosa18 4.4          2.91.4          0.2  setosa19 4.9          3.11.5          0.1  setosa1105.4          3.71.5          0.2  setosa1114.8          3.41.6          0.2  setosa1124.8          3.01.4          0.1  setosa1134.3          3.01.1          0.1  setosa1145.8          4.01.2          0.2  setosa1

这将大大增加您获得有用答案的机会!

编辑:

df_to_dict()
将无法读取时间戳,例如
1: Timestamp('2020-01-02 00:00:00')
不包含
from pandasimport Timestamp



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存