【问题标题】:Python json show data structurePython json 显示数据结构
【发布时间】:2021-12-19 08:50:30
【问题描述】:

我正在处理存储数千甚至更多条目的 json 文件。 首先,我想了解我正在使用的数据。

import json


with open("/home/xu/stock_data/stock_market_data/nasdaq/json/AAL.json", "r") as f:
    data = json.load(f)
print(json.dumps(data, indent=4))

这给了我一个易于阅读的格式,但是一些“键”(我不熟悉 json 名称,所以我在 dict 对象中使用“键”这个词)有数千个值,这使得它整体上很难阅读。

我也试过了:

import json


with open("/home/xu/stock_data/stock_market_data/nasdaq/json/AAL.json", "r") as f:
    data = json.load(f)

df = pd.DataFrame.from_dict(data, orient="index")
print (df.info)

但是得到了

<bound method DataFrame.info of                                                   result error
chart  [{'meta': {'currency': 'USD', 'symbol': 'AAL',...  None>

这种结果有点显示结构,但它以... 结尾,没有显示整个图片。

我的问题:

  1. 有没有类似np.array.shape for json/dict/pandas 的东西,可以显示结构的形状?

  2. 有没有更好的库用法来解释 json 文件的结构?

编辑: 对不起,也许我对我的问题的措辞误导了。我尝试了 pprint,它为我提供了:

{ 'chart': { 'error': None,
             'result': [ { 'events': { 'dividends': { '1406813400': { 'amount': 0.1,
                                                                      'date': 1406813400},
                                                      '1414675800': { 'amount': 0.1,
                                                                      'date': 1414675800},
                                                      '1423146600': { 'amount': 0.1,
                                                                      'date': 1423146600},
                                                      '1430400600': { 'amount': 0.1,
                                                                      'date': 1430400600},
                                                      '1438867800': { 'amount': 0.1,
                                                                      'date': 1438867800},
                                                      '1446561000': { 'amount': 0.1,
                                                                      'date': 1446561000},
                                                      '1454941800': { 'amount': 0.1,
                                                                      'date': 1454941800},
                                                      '1462195800': { 'amount': 0.1,
                                                                      'date': 1462195800},
                                                      '1470231000': { 'amount': 0.1,
                                                                      'date': 1470231000},
                                                      '1478179800': { 'amount': 0.1,
                                                                      'date': 1478179800},
                                                      '1486650600': { 'amount': 0.1,
                                                                      'date': 1486650600},
                                                      '1494595800': { 'amount': 0.1,
                                                                      'date': 1494595800},
                                                      '1502371800': { 'amount': 0.1,
                                                                      'date': 1502371800},
                                                      '1510324200': { 'amount': 0.1,
                                                                      'date': 1510324200},
                                                      '1517841000': { 'amount': 0.1,
                                                                      'date': 1517841000},
                                                      '1525699800': { 'amount': 0.1,
                                                                      'date': 1525699800},
                                                      '1533562200': { 'amount': 0.1,
                                                                      'date': 1533562200},
                                                      '1541428200': { 'amount': 0.1,
                                                                      'date': 1541428200},
                                                      '1549377000': { 'amount': 0.1,
                                                                      'date': 1549377000},
                                                      '1557235800': { 'amount': 0.1,
                                                                      'date': 1557235800},
                                                      '1565098200': { 'amount': 0.1,
                                                                      'date': 1565098200},
                                                      '1572964200': { 'amount': 0.1,
                                                                      'date': 1572964200},
                                                      '1580826600': { 'amount': 0.1,
                                                                      'date': 1580826600}}},
                           'indicators': { 'adjclose': [ { 'adjclose': [ 18.19490623474121,
                                                                         19.326200485229492,
                                                                         19.05280113220215,
                                                                         19.80699920654297,
                                                                         20.268939971923828,
                                                                         20.891149520874023,
                                                                         20.928863525390625,
                                                                         21.28710174560547,
                                                                         20.88172149658203,
                                                                         20.93828773498535,
                                                                         20.721458435058594,
                                                                         20.514055252075195,
                                                                         20.466917037963867,
                                                                         20.994853973388672,
                                                                         20.81572914123535,
                                                                         20.2595157623291,
                                                                         20.155811309814453,
                                                                         19.816425323486328,
                                                                         20.702600479125977,
                                                                         21.032560348510742,
                                                                         20.740314483642578,
                                                                         21.0419864654541,
                                                                         21.26824951171875,
                                                                         22.531522750854492,
                                                                         23.266857147216797,
                                                                         23.587390899658203,
                                                                         25.9725284576416,
                                                                         26.27420997619629,
                                                                         27.150955200195312,
                                                                         27.273509979248047,
                                                                         27.7448787689209,
                                                                         29.507808685302734,
                                                                         30.92192840576172,
                                                                         31.4404239654541,
                                                                         31.817523956298828,
                                                                         31.940074920654297,
                                                                         31.676118850708008,
                                                                         32.354888916015625,
                                                                         31.157604217529297,
                                                                         30.158300399780273,
                                                                         30.63909339904785,
                                                                         31.148174285888672,
                                                                         30.969064712524414,
                                                                         31.496990203857422,
                                                                         31.01619529724121,
                                                                         31.666685104370117,
                                                                         32.31717300415039,
                                                                         32.31717300415039,
                                                                         30.497684478759766,
                                                                         31.69496726989746,
                                                                         32.006072998046875,
                                                                         31.7326717376709,
                                                                         31.940074920654297,
                                                                         31.826950073242188,
                                                                         31.346155166625977,
                                                                         31.61954689025879,
                                                                         ...
                                                                         ...
                                                                         ...
#this goes on and on for the respective "keys" of the json file. which means I have to scroll down thousands of lines to find out what type of data I have.

我希望找到一个输出类似这样的解决方案,它不显示整个数据本身,而只显示“键”,也许还有一些附加信息。因为某些文件实际上可能包含许多 GB 的数据,因此滚动浏览是不切实际的。

#this is what I am hoping to achieve.
{
    "Name": {
        "title": <datatype=str,len=20>,
        "time_stamp":<data_type=list, len=3000>,
        "closing_price":<data_type=list, len=3000>,
        "high_price_of_the_day":<data_type=list, len=3000>
        ...
        ...
        ...
            }
}

【问题讨论】:

  • 如下显示树会有帮助吗? stackoverflow.com/questions/55926688/…
  • @JasonChia 这可能是潜在可行的解决方案,但不是开箱即用的,因为我想隐藏一些“分支”以更轻松地可视化数据。我将尝试在该建议的基础上进行构建,如果可行,我会回来。
  • 看起来您想打印出键以及值的类型。您可以为此执行一个简单的递归函数,并为您不关心的键添加一些额外的“忽略”规则。本质上,解析一个嵌套的 dict 以便您获取所有键和每个可能键的最终类型(值)。

标签: python json pandas


【解决方案1】:

您可以通过多种方式进行导航。如果您想渲染数据以快速做出更明智的决策,可以使用用于渲染字典的内置库(请参阅 pprint),但在个人层面上,我推荐一些开箱即用的工具,无需太多配置。我发现pprintpp 是任何 python 数据结构的理想选择。 https://pypi.org/project/pprintpp/

只需在终端中运行: pip3 install pprintpp 库应该安装在C:\Users\User\AppData\Local\Programs\Python\PythonXX\Lib\site-packages\pprintpp

之后,只需在您的代码中执行此操作:

import json
from pprintpp import pprint

with open("/home/xu/stock_data/stock_market_data/nasdaq/json/AAL.json", "r") as f:
    data = json.load(f)
pprint(data)

您还可以执行 pprint(data, width=1) 以保证下一个字典键在下一行,即使键很短。即:

some_dict = {'a': 'b', 'c': {'aa': 'bb'}}
pprint(data, width=1)

输出:

{
    'a': 'b',
    'c': {
        'aa': 'bb',
    },
}

希望这有帮助!干杯:)

【讨论】:

  • 感谢pprint选项,但我正在寻找一种以可读方式显示数据结构的方法,而不是数据本身。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 2017-09-12
  • 2018-02-02
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多