Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Amplitude ΡΠ΅ Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π» ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡΠ°Π΄ΠΈ Π»Π΅ΡΠ½Π°ΡΠ° ΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡΡΠ° Π½Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°. Π ΡΠ΅ΡΡΠΎ ΠΈΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΡΠΈΠΏΠΈΡΠ²Π°Π½Π΅, Π΄Π° Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π΄ΡΡΠ³Π° BI ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΡΠ°ΠΊΠ°Π²Π° ΠΈΠ·ΠΌΠ°ΠΌΠ° ΡΠ°ΠΌΠΎ ΡΡΡ ΡΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΎΡ Amplitude. Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΠ·Π½Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅.
ΠΡΠ΅Π΄ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ
- ΠΡΠΎΠ΅ΠΊΡ Π² Amplitude, Π² ΠΊΠΎΠΉΡΠΎ ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π²Π΅ΡΠ΅ ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈ Π·Π° ΡΡΡ ΡΠ΅ ΡΡΠ±ΠΈΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
- Python Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ (ΡΠ°Π±ΠΎΡΡ Π²ΡΠ² Π²Π΅ΡΡΠΈΡ 3.8.3), Ρ ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΡ ΡΠΈΡΠ°ΡΠ΅Π» Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π½ΠΈΠ²ΠΎ
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ
Π‘ΡΡΠΏΠΊΠ° 1. ΠΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° API-ΠΊΠ»ΡΡ ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠ»ΡΡ
ΠΠ° Π΄Π° ΠΊΠ°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ API ΠΊΠ»ΡΡ ΠΈ ΡΠ°Π΅Π½ ΠΊΠ»ΡΡ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΡ:
- βΠ£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈβ (Π½Π°ΠΌΠΈΡΠ° ΡΠ΅ Π² Π΄ΠΎΠ»Π½ΠΈΡ Π»ΡΠ² ΡΠ³ΡΠ» Π½Π° Π΅ΠΊΡΠ°Π½Π°)
- ΠΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΡ Π΄Π°Π½Π½ΠΈ, ΠΈ ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ
- Π ΠΌΠ΅Π½ΡΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΠ²Π°ΡΡ, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ βΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°β
- ΠΠ°ΠΌΠΈΡΠ°ΠΌΠ΅ Π½ΠΈΠ·ΠΎΠ²Π΅ΡΠ΅ Π½Π° API-ΠΊΠ»ΡΡΠ° ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ, ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎ ΠΌΡΡΡΠΎ.
ΠΠ΅Π· Π΄Π° ΠΊΠ»ΠΈΠΊΠ²Π°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ Π²ΡΡΠ·ΠΊΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π°ΠΉ-ΠΎΠ±ΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
ΠΊΡΠ΄Π΅ΡΠΎ $$$$$$ Π΅ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π½ΠΎΡΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ****** Π΅ Π½ΠΎΠΌΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π‘ΡΡΠΏΠΊΠ° 2: ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΠΎΠ±ΡΠ°ΡΠ° Π½ΠΎΠ²ΠΈΠ½Π° Π΅, ΡΠ΅ ΠΏΠΎΡΡΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ΅Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ΠΈ, Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅. ΠΡΠ»Π½ΠΈΡΡ ΡΠΏΠΈΡΡΠΊ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ (Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π² ΡΠΊΠΎΠ±ΠΈ ΡΠ° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΎ):
- Π·Π°ΡΠ²ΠΊΠΈ (2.10.0) - ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΡΡΠ΅Π· api Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ
- pandas (1.0.1) - ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° json, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΌΠΊΠ° Ρ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΏΠΈΡ Π²ΡΠ² ΡΠ°ΠΉΠ»
- zipfile - ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Π°ΡΡ ΠΈΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π· API
- gzip - ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° json ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ .gz
- os - ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π°ΡΡ ΠΈΠ²
- Π²ΡΠ΅ΠΌΠ΅ - ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ, ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°
- tqdm - ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ, Π·Π° Π»Π΅ΡΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ°ΠΉΠ»Π°
Π‘ΡΡΠΏΠΊΠ° 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.
startdate ΠΈ enddate ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° Π½Π° Amplitude; Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π΄Π°ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΠ°ΡΠ°, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΡΠ»Π΅Π΄ 'T' Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ°.
api_key ΠΈ secret_key ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΏΡΡΠ²Π°ΡΠ° ΡΡΡΠΏΠΊΠ°; ΠΎΡ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΡΡΠΊ ΠΏΠΎΡΠΎΡΠ²Π°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠΎΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ.
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. ΠΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Π°ΡΡ ΠΈΠ² Ρ Π΄Π°Π½Π½ΠΈ
ΠΠ·ΠΌΠΈΡΠ»ΡΠΌΠ΅ ΠΈΠΌΠ΅ Π·Π° Π°ΡΡ ΠΈΠ²Π° ΠΈ Π³ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π·Π° ΠΈΠΌΠ΅ Π½Π° ΡΠ°ΠΉΠ». ΠΠ° ΠΌΠΎΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° + ΠΏΠΎΡΠΎΡΠ²Π°ΠΌ, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ° Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΎΡ Amplitude Π² Π°ΡΡ ΠΈΠ²Π°.
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π°ΡΡ
ΠΈΠ²Π° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. ΠΡΡ
ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΊΠ°ΡΠ°Π½')
Π‘ΡΡΠΏΠΊΠ° 3.4. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΏΠ°ΠΏΠΊΠ° Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° zipfile Π²Π»ΠΈΠ·Π° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π·Π° Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π ΡΡΠ΅ΡΠΈΡ ΡΠ΅Π΄ Π²Π½ΠΈΠΌΠ°Π²Π°ΠΉΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΡΡ ΡΠΈ ΠΎΡΠΊΡΠ΄Π΅ΡΠΎ Π²ΠΈ Π΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ°ΡΠ΅.
# ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. ΠΡΡ
ΠΈΠ² Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ ΠΈ Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΏΠ°ΠΏΠΊΡ ' + filename)
Π‘ΡΡΠΏΠΊΠ° 3.5. json ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π°ΡΡ ΠΈΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ json ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ .gz ΠΈ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΡΠ°ΠΌΠΊΠ° Ρ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΡΠΊ ΡΡΡΠ±Π²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΡ Π½Π° Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ 000000 Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡ Amplitude (ΠΈΠ»ΠΈ ΡΡΡΠ½ΠΎ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ Π°ΡΡ ΠΈΠ²ΡΡ, ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π²ΡΡΡΠ΅).
ΠΠΎ ΡΠ΅Π΄:
ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π·Π½Π° ΡΠ°ΠΌΠΊΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ, time.sleep(1), Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ tqdm, Π²ΡΡΡΠ΅ Π² ΡΠΈΠΊΡΠ»Π° ΠΎΡΠ²Π°ΡΡΠΌΠ΅ .gz ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ pandas Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° json ΠΈ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΡΠ°ΠΌΠΊΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ.
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ json ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ
directory = 'C:\Users\...\'+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')
0000'
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
ΠΠ°ΡΠ²Π°Π½Π΅ΡΠΎ Π² excel Π΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΊ. Π ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΠΈ Π΅ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΡΠ΅Π·ΡΠ»ΡΠ°Π½ΡΠ½ΠΈΡ ΠΊΠ°Π΄ΡΡ Ρ Π΄Π°Π½Π½ΠΈ Π² Python ΠΈΠ»ΠΈ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΡ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΡΠΊ ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½.
# ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π² Excel-ΡΠ°ΠΉΠ»
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΡΠ°ΠΉΠ» ' + filename)
Π‘ΡΡΠΏΠΊΠ° 3.7. ΠΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°
ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° b, ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΈ Π±ΡΠΎΡ Π½Π° ΠΌΠΈΠ½ΡΡΠΈΡΠ΅, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠΈΡΠ΅ ΠΌΠΈΠ½ΡΡΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠΏΠΊΠ°.
b = time.time()
diff = b-a
minutes = diff//60
print('ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π·Π°Π½ΡΠ»ΠΎ: {:.0f} ΠΌΠΈΠ½ΡΡ(Ρ)'.format( minutes))
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Π½Π΅Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° amplitude_dataframe, Π² ΠΊΠΎΡΡΠΎ ΡΠ° Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅. Π©Π΅ ΠΈΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 50 ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π² 80% ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅: event_type - ΠΈΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, event_properties - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, event_time - Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, uuid - ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, user_properties - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΡΡΡ . Π ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π½ΡΠ²Π°ΡΠ΅ ΡΠΈΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΈ ΠΎΡ ΡΠ°Π±Π»Π°ΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Amplitude, Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π±ΡΠ°Π²ΡΡΠ΅, ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ/ΡΡΠ½ΠΈΠΈ ΠΈ Ρ.Π½., ΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° Amplitude.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ! Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ°ΡΠ²Π°ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ Π² Amplitude ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ.
Π¦Π΅Π»ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ:
# ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
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+'# ΠΠΌΠΏΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
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))
0000'
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))
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com