ΠŸΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅ ΠΏΡ€Π΅ΠΊΠΎ АПИ-ја

Π£Π²ΠΎΠ΄

АмплитудС сС Π²Π΅ΠΎΠΌΠ° Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΠΎ ΠΊΠ°ΠΎ Π°Π»Π°Ρ‚ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π° Π·Π±ΠΎΠ³ Π»Π°ΠΊΠΎΠ³ подСшавања Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜Π° ΠΈ флСксибилности Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅. И чСсто ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π΄Π° подСситС сопствСни ΠΌΠΎΠ΄Π΅Π» Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅, Π³Ρ€ΡƒΠΏΠ΅ корисника ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Ρƒ Ρ‚Π°Π±Π»Ρƒ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π‘Π˜ систСму. Π’Π°ΠΊΠ²Ρƒ ΠΏΡ€Π΅Π²Π°Ρ€Ρƒ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ извСсти само са сировим ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° ΠΎ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜ΠΈΠΌΠ° ΠΈΠ· АмплитудС. Овај Ρ‡Π»Π°Π½Π°ΠΊ Ρ›Π΅ Π²Π°ΠΌ Ρ€Π΅Ρ›ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΡ˜Π΅Ρ‚Π΅ ΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΡƒΠ· ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ знањС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ°.

ΠŸΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈ

  1. ΠŸΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρƒ Амплитуди Ρƒ којСм су Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜ΠΈ Π²Π΅Ρ› исправно конфигурисани ΠΈ ΠΎ њима сС ΠΏΡ€ΠΈΠΊΡƒΠΏΡ™Π° статистика
  2. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½ јС ΠŸΠΈΡ‚Ρ…ΠΎΠ½ (Ρ€Π°Π΄ΠΈΠΌ Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ 3.8.3), са којим ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ Ρ‡ΠΈΡ‚Π°Π»Π°Ρ† Π²Π΅Ρ› ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π΄ΠΈ Π±Π°Ρ€Π΅ΠΌ Π½Π° основном Π½ΠΈΠ²ΠΎΡƒ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π°

ΠšΠΎΡ€Π°ΠΊ 1. Π”ΠΎΠ±ΠΈΡ˜Π°ΡšΠ΅ АПИ-ΠΊΡ™ΡƒΡ‡Π° ΠΈ Ρ‚Π°Ρ˜Π½ΠΎΠ³ ΠΊΡ™ΡƒΡ‡Π°

Π”Π° бистС ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅, ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° Π½Π°Π±Π°Π²ΠΈΡ‚Π΅ АПИ ΠΊΡ™ΡƒΡ‡ ΠΈ Ρ‚Π°Ρ˜Π½ΠΈ ΠΊΡ™ΡƒΡ‡.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅Ρ‚Π΅ ΠΏΡ€Π°Ρ‚ΠΈΡ‚ΠΈ слСдСћу ΠΏΡƒΡ‚Π°ΡšΡƒ:

  1. β€žΠ£ΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°β€œ (Π½Π°Π»Π°Π·ΠΈ сС Ρƒ доњСм Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ Π΅ΠΊΡ€Π°Π½Π°)
  2. Π˜Π·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΆΠ΅Ρ™Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ са којСг Ρ›Π΅ сС ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚ΠΈ ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΈ ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° њСга
  3. Π£ ΠΌΠ΅Π½ΠΈΡ˜Ρƒ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° који сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΈΠ·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ β€žΠŸΠΎΠ΄Π΅ΡˆΠ°Π²Π°ΡšΠ° ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π°β€œ
  4. ΠŸΡ€ΠΎΠ½Π°Π»Π°Π·ΠΈΠΌΠΎ Π½ΠΈΠ·ΠΎΠ²Π΅ АПИ-ΠΊΡ™ΡƒΡ‡Π° ΠΈ Ρ‚Π°Ρ˜Π½ΠΎΠ³ ΠΊΡ™ΡƒΡ‡Π°, ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠΎ ΠΈΡ… ΠΈ Ρ‡ΡƒΠ²Π°ΠΌΠΎ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΠΌ мСсту.

Π‘Π΅Π· ΠΊΠ»ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Ρ‚ΠΈΡ‚ΠΈ Π²Π΅Π·Ρƒ, која Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
аналитицс.Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅.Ρ†ΠΎΠΌ/$$$$$$$/ΠΌΠ°Π½Π°Π³Π΅/ΠΏΡ€ΠΎΡ˜Π΅Ρ†Ρ‚/******/сСттингс,
Π³Π΄Π΅ јС $$$$$$ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π° Π·Π° ΠΏΡ€ΠΈΡ˜Π°Π²Ρƒ вашС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅, ****** јС Π±Ρ€ΠΎΡ˜ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π°

ΠšΠΎΡ€Π°ΠΊ 2: ΠŸΡ€ΠΎΠ²Π΅Ρ€Π° присуства ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Π”ΠΎΠ±Ρ€Π° вСст јС Π΄Π° скоро сигурно Π²Π΅Ρ› ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ инсталиранС ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚Π΅, Π°Π»ΠΈ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅. ΠšΠΎΠΌΠΏΠ»Π΅Ρ‚Π½Π° листа Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° којС сам користио Ρƒ Π²Ρ€Π΅ΠΌΠ΅ писања (Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Ρƒ Π·Π°Π³Ρ€Π°Π΄Π°ΠΌΠ° су Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π΅ Π³Π΄Π΅ јС Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎ):

  1. Π·Π°Ρ…Ρ‚Π΅Π²ΠΈ (2.10.0) - слањС Π·Π°Ρ…Ρ‚Π΅Π²Π° ΠΏΡ€Π΅ΠΊΠΎ АПИ-ја Π·Π° ΠΏΡ€ΠΈΡ˜Π΅ΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°
  2. пандас (1.0.1) - Ρ‡ΠΈΡ‚Π°ΡšΠ΅ јсон-Π°, ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΎΠΊΠ²ΠΈΡ€Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π·Π°Ρ‚ΠΈΠΌ писањС Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ
  3. Π·ΠΈΠΏΡ„ΠΈΠ»Π΅ - издваја Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΡ™Π΅Π½Π΅ ΠΏΡ€Π΅ΠΊΠΎ АПИ-ја
  4. Π³Π·ΠΈΠΏ - Ρ€Π°ΡΠΏΠ°ΠΊΠΈΠ²Π°ΡšΠ΅ јсон Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ· .Π³Π·
  5. ос - добијањС листС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ· Π½Π΅ΠΎΡ‚ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π°Ρ€Ρ…ΠΈΠ²Π΅
  6. Π²Ρ€Π΅ΠΌΠ΅ - ΠΎΠΏΡ†ΠΈΠΎΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ Ρ€Π°Π΄Π° скриптС
  7. Ρ‚ΠΊΠ΄ΠΌ - ΠΎΠΏΡ†ΠΈΠΎΠ½ΠΎ, Π·Π° Π»Π°ΠΊΠΎ ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ Π½Π°ΠΏΡ€Π΅Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Π΄Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°

ΠšΠΎΡ€Π°ΠΊ 3. ПисањС скриптС Π·Π° ΡƒΡ‡ΠΈΡ‚Π°Π²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°

Π‘Π°Π²Π΅Ρ‚: ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½Π° скрипта Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ јС Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ Ρ‡Π»Π°Π½ΠΊΠ°; Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ јС ΠΎΠ΄ΠΌΠ°Ρ… ΡƒΠ·Π΅Ρ‚ΠΈ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚ΠΈ Π΄Π΅Ρ‚Π°Ρ™Π½Π° објашњСња Π°ΠΊΠΎ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ.

ΠšΠΎΡ€Π°ΠΊ 3.1. Π£Π²ΠΎΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Π£Π²ΠΎΠ·ΠΈΠΌΠΎ свС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΡ€Π°ΠΊΡƒ.

# Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm

ΠšΠΎΡ€Π°ΠΊ 3.2. ПодношСњС Π·Π°Ρ…Ρ‚Π΅Π²Π° Амплитуди

Π₯ајдС Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π΅ΠΌΠΎ ΠΏΠΎΡ‡Π΅Ρ‚Π°ΠΊ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° скриптС ΠΈ запишСмо Π³Π° Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ Π°.

ΠŸΠΎΡ‡Π΅Ρ‚Π½ΠΈ Π΄Π°Ρ‚ΡƒΠΌ ΠΈ ΠΊΡ€Π°Ρ˜ΡšΠΈ Π΄Π°Ρ‚ΡƒΠΌ су ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈ су Ρƒ тСкст послатог Π·Π°Ρ…Ρ‚Π΅Π²Π°. сСрвСр Амплитуду, ΠΏΠΎΡ€Π΅Π΄ Π΄Π°Ρ‚ΡƒΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚ΠΈ ΠΈ сат ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΎΠΌ врСдности послС 'Π’' Ρƒ Π·Π°Ρ…Ρ‚Π΅Π²Ρƒ.

Π°ΠΏΠΈ_ΠΊΠ΅ΠΈ ΠΈ сСцрСт_ΠΊΠ΅ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜Ρƒ врСдностима добијСним Ρƒ ΠΏΡ€Π²ΠΎΠΌ ΠΊΠΎΡ€Π°ΠΊΡƒ; ΠΈΠ· бСзбСдносних Ρ€Π°Π·Π»ΠΎΠ³Π°, ΠΎΠ²Π΄Π΅ Π½Π°Π²ΠΎΠ΄ΠΈΠΌ насумичнС сСквСнцС умСсто својС.

a = time.time()
# ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запроса Π² Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½')

ΠšΠΎΡ€Π°ΠΊ 3.3. ΠŸΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π΅ са ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°

Бмислимо ΠΈΠΌΠ΅ Π·Π° Π°Ρ€Ρ…ΠΈΠ²Ρƒ ΠΈ ΡƒΠΏΠΈΡˆΠ΅ΠΌΠΎ Π³Π° Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΈΠΌΠ΅Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. Π Π°Π΄ΠΈ мојС погодности, ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ + ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π΄Π° су ΠΎΠ²ΠΎ ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄ΠΈ. Π—Π°Ρ‚ΠΈΠΌ снимамо ΠΏΡ€ΠΈΠΌΡ™Π΅Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ΄ АмплитудС Ρƒ Π°Ρ€Ρ…ΠΈΠ²Ρƒ.

# Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
    code.write(response.content)
print('2. Архив с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скачан')  

ΠšΠΎΡ€Π°ΠΊ 3.4. ΠŸΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ· фасциклС Π½Π° вашСм Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ€Ρƒ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·ΠΈΠΏΡ„ΠΈΠ»Π΅ ΡƒΠ»Π°Π·ΠΈ Ρƒ ΠΈΠ³Ρ€Ρƒ ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΈ Π΅ΠΊΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. Π£ Ρ‚Ρ€Π΅Ρ›Π΅ΠΌ Ρ€Π΅Π΄Ρƒ Π±ΡƒΠ΄ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π·Π½ΠΈ ΠΈ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠ²ΠΎΡ˜Ρƒ ΠΏΡƒΡ‚Π°ΡšΡƒ Π³Π΄Π΅ Π²Π°ΠΌ јС згоднијС Π΄Π° ΠΈΠ·Π²ΡƒΡ‡Π΅Ρ‚Π΅.

# Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΡƒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΈ записан Π² ΠΏΠ°ΠΏΠΊΡƒ ' + filename)

ΠšΠΎΡ€Π°ΠΊ 3.5. јсон ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΡ˜Π°

Након ΡˆΡ‚ΠΎ ΠΈΠ·Π²ΡƒΡ‡Π΅Ρ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅Ρ‚Π΅ јсон Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ .Π³Π· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π΄Π° ΠΈΡ… Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρƒ Π΄Π°Ρ‚Π°Ρ„Ρ€Π°ΠΌΠ΅ Π·Π° Π΄Π°Ρ™ΠΈ Ρ€Π°Π΄.

Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌΡƒ Π΄Π° ΠΎΠ²Π΄Π΅ Ρ‚Ρ€Π΅Π±Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°ΡšΡƒ Ρƒ ΡΠ²ΠΎΡ˜Ρƒ, ΠΈ умСсто 000000 ΡƒΠΏΠΈΡˆΠΈΡ‚Π΅ Π±Ρ€ΠΎΡ˜ свог ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° ΠΈΠ· АмплитудС (ΠΈΠ»ΠΈ Ρ€ΡƒΡ‡Π½ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°ΡšΡƒ Π³Π΄Π΅ јС Π°Ρ€Ρ…ΠΈΠ²Π° ΠΈΠ·Π²ΡƒΡ‡Π΅Π½Π° ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ Π½Π°Π·ΠΈΠ² фасциклС ΡƒΠ½ΡƒΡ‚Ρ€Π°).

Π£ Ρ€Π΅Π΄Ρƒ:

ПисањС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ° Ρƒ ​​промСнљиву, добијањС листС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ°, ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π°Π·Π½ΠΎΠ³ ΠΎΠΊΠ²ΠΈΡ€Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Ρ‚ΠΈΠΌΠ΅.слССп(1) Π΄Π° Ρ‚ΠΊΠ΄ΠΌ Ρ€Π°Π΄ΠΈ исправно, ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠΏΠ΅Ρ‚Ρ™Π΅ ΠΎΡ‚Π²Π°Ρ€Π°ΠΌΠΎ .Π³Π· Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ΠΎΠ΄ΠΌΠ°Ρ… користимо пандас Π΄Π° Ρ‡ΠΈΡ‚Π°ΠΌΠΎ јсон ΠΈ ΠΏΠΎΠΏΡƒΡšΠ°Π²Π°ΠΌΠΎ Π΄Π°Ρ‚ΠΈ ΠΎΠΊΠ²ΠΈΡ€ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ json ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²:')
time.sleep(1)
for i in tqdm(files):
    with gzip.open(directory + '\' + i) as f:
        add = pd.read_json(f, lines = 'True')
    amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)    
print('4. JSON Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ ΠΈ записаны Π² dataframe')

ΠšΠΎΡ€Π°ΠΊ 3.6. ПисањС ΠΎΠΊΠ²ΠΈΡ€Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ Π•ΠΊΡ†Π΅Π»-Ρƒ

ΠžΡ‚ΠΏΡ€Π΅ΠΌΠ°ΡšΠ΅ Ρƒ Π•ΠΊΡ†Π΅Π» јС само ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ²Π΄Π΅. Π£ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ°, згоднијС јС Ρ€Π°Π΄ΠΈΡ‚ΠΈ са Ρ€Π΅Π·ΡƒΠ»Ρ‚ΡƒΡ˜ΡƒΡ›ΠΈΠΌ ΠΎΠΊΠ²ΠΈΡ€ΠΎΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° ΠΈΠ»ΠΈ ставити ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρƒ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅.

ОвдС Ρ›Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΌΠΎΡ€Π°Ρ‚ΠΈ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡƒΡ‚Π°ΡšΡƒ Π·Π° ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠ°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° својом.

# Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Excel-Ρ„Π°ΠΉΠ»
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ записан Π² Ρ„Π°ΠΉΠ» ' + filename)

ΠšΠΎΡ€Π°ΠΊ 3.7. Π Π°Ρ‡ΡƒΠ½Π°ΠΌΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ€Π°Π΄Π° скриптС

БнимањС Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠ³ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Ρƒ Π²Π°Ρ€ΠΈΡ˜Π°Π±Π»Ρƒ Π±, ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Π²Π°ΡšΠ΅ Ρ€Π°Π·Π»ΠΈΠΊΠ΅ ΠΈ Π±Ρ€ΠΎΡ˜Π° ΠΌΠΈΠ½ΡƒΡ‚Π°, ΠΏΡ€ΠΈΠΊΠ°Π·ΠΈΠ²Π°ΡšΠ΅ ΡƒΠΊΡƒΠΏΠ½ΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚Π°. Ово јС послСдњи ΠΊΠΎΡ€Π°ΠΊ.

b = time.time()
diff = b-a
minutes = diff//60
print('Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° заняло: {:.0f} ΠΌΠΈΠ½ΡƒΡ‚(Ρ‹)'.format( minutes))

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²Π°Ρ‚ΠΈ Ρ‚Π°Π±Π΅Π»Ρƒ ΠΈ ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са њом Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅Ρ‚Π΅ ΠΏΠΎΠ·Π²Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅_Π΄Π°Ρ‚Π°Ρ„Ρ€Π°ΠΌΠ΅ Ρƒ ΠΊΠΎΡ˜Ρƒ су ΠΏΠΎΠ΄Π°Ρ†ΠΈ уписани. Π˜ΠΌΠ°Ρ›Π΅ ΠΎΠΊΠΎ 50 ΠΊΠΎΠ»ΠΎΠ½Π°, ΠΎΠ΄ ΠΊΠΎΡ˜ΠΈΡ… Ρ›Π΅Ρ‚Π΅ Ρƒ 80% ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²Π° користити: Π΅Π²Π΅Π½Ρ‚_Ρ‚ΠΈΠΏΠ΅ - Π½Π°Π·ΠΈΠ² Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜Π°, Π΅Π²Π΅Π½Ρ‚_пропСртиСс - ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜Π°, Π΅Π²Π΅Π½Ρ‚_Ρ‚ΠΈΠΌΠ΅ - Π²Ρ€Π΅ΠΌΠ΅ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜Π°, ΡƒΡƒΠΈΠ΄ - ΠΈΠ΄ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°, усСр_пропСртиСс - ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°, ΠΏΡ€Π²ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са њима . А ΠΊΠ°Π΄Π° ΡƒΠΏΠΎΡ€Π΅Π΄ΠΈΡ‚Π΅ Π±Ρ€ΠΎΡ˜ΠΊΠ΅ ΠΈΠ· сопствСних ΠΏΡ€ΠΎΡ€Π°Ρ‡ΡƒΠ½Π° са ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΠΌΠ° са ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π΅ Ρ‚Π°Π±Π»Π΅ АмплитудС, Π½Π΅ смСтС Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚ΠΈ Π΄Π° систСм користи сопствСну ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ˜Ρƒ Π·Π° ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Π²Π°ΡšΠ΅ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈΡ… ΠΊΠ»ΠΈΡ˜Π΅Π½Π°Ρ‚Π°/Ρ‚ΠΎΠΊΠΎΠ²Π° ΠΈΡ‚Π΄., Π° ΠΏΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅, свакако Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ ΠΎ Амплитуди.

Π₯Π²Π°Π»Π° Π½Π° паТњи! Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ€Π°Ρ’Π΅Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΎ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜ΠΈΠΌΠ° Ρƒ АмплитудС ΠΈ Π΄Π° ΠΈΡ… Ρƒ потпуности користитС Ρƒ свом Ρ€Π°Π΄Ρƒ.

Π¦Π΅Π»Π° скрипта:

# Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
a = time.time()
# ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹
startdate = '20200627'
enddate = '20200628'

api_key = 'd988fddd7cfc0a8a'
secret_key = 'da05cf1aeb3a361a61'
# ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запроса Π² Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½')

# Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
    code.write(response.content)
print('2. Архив с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скачан')  

# Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΡƒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΈ записан Π² ΠΏΠ°ΠΏΠΊΡƒ ' + filename)

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ json ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²:')
time.sleep(1)
for i in tqdm(files):
    with gzip.open(directory + '\' + i) as f:
        add = pd.read_json(f, lines = 'True')
    amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)    
print('4. JSON Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ ΠΈ записаны Π² dataframe')

# Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Excel-Ρ„Π°ΠΉΠ»
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ записан Π² Ρ„Π°ΠΉΠ» ' + filename)

b = time.time()
diff = b-a
minutes = diff//60
print('Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° заняло: {:.0f} ΠΌΠΈΠ½ΡƒΡ‚(Ρ‹)'.format( minutes))

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ са Π”Π”ΠΎΠ‘ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, Π’ΠŸΠ‘ Π’Π”Π‘ сСрвСрС πŸ”₯ ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ Π²Π΅Π± хостинг са DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, VPS VDS сСрвСрС | ProHoster