Python – Pandas сопоставляет два дампа API json как фреймы данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python – Pandas сопоставляет два дампа API json как фреймы данных

Сообщение Anonymous »

Я сетевой администратор и работаю над небольшим проектом, используя оболочку Cisco Meraki API для Python.
Конечная цель — создать панель мониторинга, которая отображает количество аутентифицированных пользователей на одна точка доступа в течение установленного периода времени X. Я использовал Pandas для форматирования ответов json и пытался работать с ними, но я немного застрял, так как никогда не работал с Json, API или Pandas.
Dataframe 1 — это список всех точек доступа и необходимой информации о них выглядит примерно так:

Код: Выделить всё

name - serial - mac - networkID - model - IP - last updated - Firmware
Затем я перебираю каждый серийный номер в кадре данных, чтобы получить соответствующие данные времени для серийного номера

Код: Выделить всё

for serial in df['serial']:
times =[]
times.append(dashboard.wireless.getNetworkWirelessClientCountHistory(networkID,deviceSerial=serial,timespan=3600,resolution=300))
print(times)
Ответ API будет представлять собой список по 11 элементов каждый

Код: Выделить всё

{'startTs': '2024-12-12T11:05:00Z',
'endTs': '2024-12-12T11:10:00Z',
'clientCount': None}
Теперь я не знаю, как продолжить форматирование данных, чтобы я мог построить их в виде простого графика, состоящего из:
X = временная метка, например, 11:05:00
Y = ClientCount, например, нет
Я не уверен, какой способ будет самым простым, поскольку каждый ответ API для времени должен быть сопоставлен с правильной точкой доступа, поэтому Я могу отображать данные для каждой точки доступа индивидуально.
Кадр данных для времени выглядит примерно так (для каждой точки доступа)

Код: Выделить всё

    startTs                 endTs                   clientCount

0   2024-12-12T10:10:00Z    2024-12-12T10:15:00Z    None

1   2024-12-12T10:15:00Z    2024-12-12T10:20:00Z    None

2   2024-12-12T10:20:00Z    2024-12-12T10:25:00Z    None

3   2024-12-12T10:25:00Z    2024-12-12T10:30:00Z    None
Общий код, который у меня сейчас есть:

Код: Выделить всё

import meraki
import pandas as pd
from datetime import datetime

API_KEY = 'API_KEY_HERE'

dashboard = meraki.DashboardAPI(API_KEY)

org_id = 'ORG_ID_HERE'
Network_ID = 'MERAKI_NETWORK_ID_HERE'
client_id = ''

#get all devices
response = dashboard.organizations.getOrganizationDevices(
org_id, total_pages='all', networkIds= NETWORK_ID_HERE
)

#filter for APs
response = list(filter(lambda x: x['productType'] == "wireless",response))
df = pd.DataFrame(response)
#drop columns
df = df.drop(['details','url','tags','notes','lng','lat','address','productType'],axis=1)

for serial in df['serial']:
times = []

times.append(dashboard.wireless.getNetworkWirelessClientCountHistory(NETWORK_ID_HERE,deviceSerial=serial,timespan=3600,resolution=300))
Не знаю, как исправить форматирование в последней строке, но, надеюсь, вы поняли общую идею. Я смотрел видео на YouTube на пандах в качестве библиотеки, но мне еще предстоит разобраться. как мне нужно это решить. Любой указатель приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/792 ... dataframes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»