Как проанализировать файл JSON для DataFrame в Python - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть некоторые данные JSON данных телефона акселерометр. Который выглядит так:

{u'timestamps': {u'1524771017235': [[u'x',
                                     u'y',
                                     u'z',
                                     u'rotationX',
                                     u'rotationY',
                                     u'rotationZ'],
                                    [-0.02, 0, 0.04, 102.65, 68.15, 108.61],
                                    [-0.03, 0.02, 0.02, 102.63, 68.2, 108.5],
                                    [-0.05, 0.01, 0.1, 102.6, 68.25, 108.4],
                                    [-0.02, 0, 0.09, 102.6, 68.25, 108.4],
                                    [-0.01, 0, 0.03, 102.6, 68.25, 108.4]]}}

То, что я хочу, это иметь dataFrame со столбцами имени данных (x, y, z вращениеX, вращение Y, вращение Z) и строку каждой записи данных. Информация о метке времени может храниться в другом месте.

Когда я использовал d = pd.read_json ('data.json'), это то, что я получаю:

timestamps
2018-04-26 19:30:17.235 [[x, y, z, rotationX, rotationY, rotationZ], [...

Кажется, в качестве индекса используются временные метки. И все остальное положите в 1 ячейку.

У меня нет большого опыта работы с json, так что он не может иметь особого смысла в API pandas.read_json. пожалуйста помоги.

Мой текущий способ - вручную пропустить первые 2 словаря. И создайте df с первым столбцом в качестве заголовков. Это работает, но на самом деле это не идеально ...

dataDf = pd.DataFrame(data = d['timestamps']['1524771017235'][1:], columns = d['timestamps']['1524771017235'][0])

x   y   z   rotationX   rotationY   rotationZ
0   -0.02   0.00    0.04    102.65  68.15   108.61
1   -0.03   0.02    0.02    102.63  68.20   108.50
2   -0.05   0.01    0.10    102.60  68.25   108.40

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

Вам нужно получить доступ к ключу словаря {u'1524771017235': [[u'x', ..., являющемуся значением, связанным с ключом timestamps словаря d, связанным с вашим файлом json. Тогда попробуйте:

d['timestamps'].keys()[0]

и оно должно вернуть ваше '1524771017235' значение, поэтому для создания dataDf просто выполните:

dataDf = pd.DataFrame(data = d['timestamps'][d['timestamps'].keys()[0]][1:], 
                      columns = d['timestamps'][d['timestamps'].keys()[0]][0])

и вы получите тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...