Size: a a a

Python для анализа данных

2020 November 13

A

Andrey Denisov in Python для анализа данных
Да я сам - этот самый бизнес))
источник

РЧ

Руслан Черненко... in Python для анализа данных
Не надо мучаться с PBI, надо им наслаждаться 😅
источник

PK

Pavel Kabanov in Python для анализа данных
Всем привет! подскажите пожалуйста как можно не привязываясь к структуре json перебрать все fields и заменить "." в названии на "_"?
а то при загрузке json в bigquery ругается 400 Invalid field name "selection.text". Fields must contain only letters, numbers, and underscores, start with a letter or underscore, and be at most 128 characters long. Table: TEST_e5035d53_ed05_4274_93a2_6e2b1c0e3da1_source
источник

AD

Artemiy Dubovoy in Python для анализа данных
json.dumps() → replace() → json.loads()
источник

AD

Artemiy Dubovoy in Python для анализа данных
Возможно, не самый оптимальный вариант, но точно один из самых простых

P. S. Плох тем, что заменит значения в полях тоже.
P. P. S. Можно вот так

a = {'some.key': 1, 'another.key': 2, 'one.more.key': 3}
b = {key.replace('.', '_'): value for key, value in a.items()}
источник

PK

Pavel Kabanov in Python для анализа данных
Artemiy Dubovoy
Возможно, не самый оптимальный вариант, но точно один из самых простых

P. S. Плох тем, что заменит значения в полях тоже.
P. P. S. Можно вот так

a = {'some.key': 1, 'another.key': 2, 'one.more.key': 3}
b = {key.replace('.', '_'): value for key, value in a.items()}
a = [{'some.key': 'some.key', 'another.key': 2, 'one.more.key': 3}]
b = {key.replace('.', '_'): value for key, value in a.items()}

вот так уже не работает. пишет AttributeError: 'list' object has no attribute 'items'

а добавил всего закрывающие скобки [..]
источник

AD

Artemiy Dubovoy in Python для анализа данных
Ну, вы не уточнили, что у вас массив объектов
источник

AD

Artemiy Dubovoy in Python для анализа данных
Тогда эту конструкцию нужно в цикл поместить
источник

AD

Artemiy Dubovoy in Python для анализа данных
Pavel Kabanov
a = [{'some.key': 'some.key', 'another.key': 2, 'one.more.key': 3}]
b = {key.replace('.', '_'): value for key, value in a.items()}

вот так уже не работает. пишет AttributeError: 'list' object has no attribute 'items'

а добавил всего закрывающие скобки [..]
Вы всего лишь добавили [..], а тип данных поменялся)
источник

PK

Pavel Kabanov in Python для анализа данных
Artemiy Dubovoy
Вы всего лишь добавили [..], а тип данных поменялся)
сделал вот так (на примере одной записи в json), но и key, и value меняет "." на "_" что не очень хорошо

rec = elevations['items']
rec_dict = [x for x in rec if x['id'] == 58]
rec_json = json.dumps(rec_dict)
rec_json = rec_json.replace('.','_')
rec_json = json.loads(rec_json)
rec_json

вот как сделать правильно?
источник

AD

Artemiy Dubovoy in Python для анализа данных
Так я же написал, что это произойдёт, а затем скинул правильный вариант
источник

AD

Artemiy Dubovoy in Python для анализа данных
Если у вас массив объектов, пройдитесь по нему циклом
источник

PK

Pavel Kabanov in Python для анализа данных
если использовать цикл, то он определяет верхние ярусы json, к примеру, я id, fields. А в fields уже глубже сидит textblocks
источник

PK

Pavel Kabanov in Python для анализа данных
Artemiy Dubovoy
Если у вас массив объектов, пройдитесь по нему циклом
я попробовал, но не допер как value вывести вместе с key при таком раскладе
источник

BL

Boris Litvyakov in Python для анализа данных
Pavel Kabanov
если использовать цикл, то он определяет верхние ярусы json, к примеру, я id, fields. А в fields уже глубже сидит textblocks
чо
источник

BL

Boris Litvyakov in Python для анализа данных
Pavel Kabanov
я попробовал, но не допер как value вывести вместе с key при таком раскладе
ты сделал не так как тебе посоветовали
источник
2020 November 14

K

Kuat in Python для анализа данных
Привет! Подскажие, плиз, как один столбец сгруппировать, а другой проссумировать на основе группировки
Дано:
1432 — 10
1563 — 12
1432 — 15
1563 — 12
1674 — 8
Надо:
1432 — 25
1563 — 24
1674 — 8
источник

S

Slavik in Python для анализа данных
Pivot_table же)
источник

A

Anton in Python для анализа данных
Df.Groupby()
источник

AD

Artemiy Dubovoy in Python для анализа данных
Pavel Kabanov
я попробовал, но не допер как value вывести вместе с key при таком раскладе
Вот вам функция, можете туда хоть словарь, хоть список кидать

def recursive_replace(data):
   if isinstance(data, dict):
       return {key.replace('.', '_'): recursive_replace(value) for key, value in data.items()}
   elif isinstance(data, list):
       return [recursive_replace(each_element) for each_element in data]
   else:
       return data
источник