Π£Π²ΠΎΠ΄
ΠΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅ ΡΠ΅ Π²Π΅ΠΎΠΌΠ° Π΄ΠΎΠ±ΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΠΎ ΠΊΠ°ΠΎ Π°Π»Π°Ρ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π° Π·Π±ΠΎΠ³ Π»Π°ΠΊΠΎΠ³ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° Π΄ΠΎΠ³Π°ΡΠ°ΡΠ° ΠΈ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠΈ Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΠ΅. Π ΡΠ΅ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΌΠΎΠ΄Π΅Π» Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅, Π³ΡΡΠΏΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Ρ ΡΠ°Π±Π»Ρ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΠ ΡΠΈΡΡΠ΅ΠΌΡ. Π’Π°ΠΊΠ²Ρ ΠΏΡΠ΅Π²Π°ΡΡ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ° ΡΠΈΡΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΎ Π΄ΠΎΠ³Π°ΡΠ°ΡΠΈΠΌΠ° ΠΈΠ· ΠΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅. ΠΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ ΡΠ΅ Π²Π°ΠΌ ΡΠ΅ΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ ΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΡΠ· ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π·Π½Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ°.
ΠΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈ
- ΠΡΠΎΡΠ΅ΠΊΠ°Ρ Ρ ΠΠΌΠΏΠ»ΠΈΡΡΠ΄ΠΈ Ρ ΠΊΠΎΡΠ΅ΠΌ ΡΡ Π΄ΠΎΠ³Π°ΡΠ°ΡΠΈ Π²Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΈ ΠΎ ΡΠΈΠΌΠ° ΡΠ΅ ΠΏΡΠΈΠΊΡΠΏΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ (ΡΠ°Π΄ΠΈΠΌ Ρ Π²Π΅ΡΠ·ΠΈΡΠΈ 3.8.3), ΡΠ° ΠΊΠΎΡΠΈΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΈ ΡΠΈΡΠ°Π»Π°Ρ Π²Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π΄ΠΈ Π±Π°ΡΠ΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½ΠΈΠ²ΠΎΡ
ΠΠ½ΡΡΡΡΠΊΡΠΈΡΠ°
ΠΠΎΡΠ°ΠΊ 1. ΠΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΠΠ-ΠΊΡΡΡΠ° ΠΈ ΡΠ°ΡΠ½ΠΎΠ³ ΠΊΡΡΡΠ°
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΎΡΠΏΡΠ΅ΠΌΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅, ΠΏΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° Π½Π°Π±Π°Π²ΠΈΡΠ΅ ΠΠΠ ΠΊΡΡΡ ΠΈ ΡΠ°ΡΠ½ΠΈ ΠΊΡΡΡ.
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ ΠΏΡΠΎΠ½Π°ΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΡΠ°ΡΠΈΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΏΡΡΠ°ΡΡ:
- βΠ£ΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°β (Π½Π°Π»Π°Π·ΠΈ ΡΠ΅ Ρ Π΄ΠΎΡΠ΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ Π΅ΠΊΡΠ°Π½Π°)
- ΠΠ·Π°Π±Π΅ΡΠΈΡΠ΅ ΠΆΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ° ΠΊΠΎΡΠ΅Π³ ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΈ ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ΅Π³Π°
- Π£ ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ ΠΈΠ·Π°Π±Π΅ΡΠΈΡΠ΅ βΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ°β
- ΠΡΠΎΠ½Π°Π»Π°Π·ΠΈΠΌΠΎ Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΠΠ-ΠΊΡΡΡΠ° ΠΈ ΡΠ°ΡΠ½ΠΎΠ³ ΠΊΡΡΡΠ°, ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ ΠΈΡ ΠΈ ΡΡΠ²Π°ΠΌΠΎ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΡ.
ΠΠ΅Π· ΠΊΠ»ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ°ΡΠΈΡΠΈ Π²Π΅Π·Ρ, ΠΊΠΎΡΠ° Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
Π°Π½Π°Π»ΠΈΡΠΈΡΡ.Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅.ΡΠΎΠΌ/$$$$$$$/ΠΌΠ°Π½Π°Π³Π΅/ΠΏΡΠΎΡΠ΅ΡΡ/******/ΡΠ΅ΡΡΠΈΠ½Π³Ρ,
Π³Π΄Π΅ ΡΠ΅ $$$$$$ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π° Π·Π° ΠΏΡΠΈΡΠ°Π²Ρ Π²Π°ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅, ****** ΡΠ΅ Π±ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°
ΠΠΎΡΠ°ΠΊ 2: ΠΡΠΎΠ²Π΅ΡΠ° ΠΏΡΠΈΡΡΡΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΎΠ±ΡΠ° Π²Π΅ΡΡ ΡΠ΅ Π΄Π° ΡΠΊΠΎΡΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎ Π²Π΅Ρ ΠΈΠΌΠ°ΡΠ΅ ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΠ·Π΅ΡΠ΅, Π°Π»ΠΈ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅. ΠΠΎΠΌΠΏΠ»Π΅ΡΠ½Π° Π»ΠΈΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ΅ ΡΠ°ΠΌ ΠΊΠΎΡΠΈΡΡΠΈΠΎ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΏΠΈΡΠ°ΡΠ° (Π²Π΅ΡΠ·ΠΈΡΠ΅ Ρ Π·Π°Π³ΡΠ°Π΄Π°ΠΌΠ° ΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Π΅ Π³Π΄Π΅ ΡΠ΅ ΡΠΎ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎ):
- Π·Π°Ρ ΡΠ΅Π²ΠΈ (2.10.0) - ΡΠ»Π°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΡΠ΅ΠΊΠΎ ΠΠΠ-ΡΠ° Π·Π° ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°
- ΠΏΠ°Π½Π΄Π°Ρ (1.0.1) - ΡΠΈΡΠ°ΡΠ΅ ΡΡΠΎΠ½-Π°, ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠΊΠ²ΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ Π·Π°ΡΠΈΠΌ ΠΏΠΈΡΠ°ΡΠ΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
- Π·ΠΈΠΏΡΠΈΠ»Π΅ - ΠΈΠ·Π΄Π²Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ· Π°ΡΡ ΠΈΠ²Π΅ ΠΏΡΠΈΠΌΡΠ΅Π½Π΅ ΠΏΡΠ΅ΠΊΠΎ ΠΠΠ-ΡΠ°
- Π³Π·ΠΈΠΏ - ΡΠ°ΡΠΏΠ°ΠΊΠΈΠ²Π°ΡΠ΅ ΡΡΠΎΠ½ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈΠ· .Π³Π·
- ΠΎΡ - Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π»ΠΈΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈΠ· Π½Π΅ΠΎΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π°ΡΡ ΠΈΠ²Π΅
- Π²ΡΠ΅ΠΌΠ΅ - ΠΎΠΏΡΠΈΠΎΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π΄Π° ΡΠΊΡΠΈΠΏΡΠ΅
- ΡΠΊΠ΄ΠΌ - ΠΎΠΏΡΠΈΠΎΠ½ΠΎ, Π·Π° Π»Π°ΠΊΠΎ ΠΏΡΠ°ΡΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ΅ΡΠΊΠ° ΠΎΠ±ΡΠ°Π΄Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
ΠΠΎΡΠ°ΠΊ 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))
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ
