ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Amplitude ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΎΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ Π·Π°ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡΠ΅Π±Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ. Π Π½Π΅ΡΠ΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π½Π°Π»Π°Π΄ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠΈΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π°ΡΠ±ΠΎΡΠ΄ Π² Π΄ΡΡΠ³ΠΎΠΉ BI-ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΌΠ°Ρ
ΠΈΠ½Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Ρ ΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ
ΠΈΠ· Amplitude. Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΈ Π±ΡΠ΄Π΅Ρ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΠ΅ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡ
- ΠΡΠΎΠ΅ΠΊΡ Π² Amplitude, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΆΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΡΠΎΠ±ΡΡΠΈΡ, ΠΈ ΠΏΠΎ Π½ΠΈΠΌ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
- Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ python (ΡΠ°Π±ΠΎΡΠ°Ρ Π² Π²Π΅ΡΡΠΈΠΈ 3.8.3), Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΡΡ Π±Ρ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ
Π¨Π°Π³ 1. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ API-key ΠΈ secret-key
Π§ΡΠΎΠ±Ρ Π²ΡΠ³ΡΡΠ·ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ API-key ΠΈ secret-key.
ΠΠ°ΠΉΡΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΡΡΠΈ:
- Β«Manage dataΒ» (Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π»Π΅Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π°)
- ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠ³ΡΡΠΆΠ°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² Π½Π΅Π³ΠΎ
- Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Β«Project settingsΒ»
- ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΡΠΎΠΊΠΈ API-key ΠΈ secret-key, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΡ Π² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΠ΅Π· ΠΏΡΠΎΠΊΠ»ΠΈΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
Π³Π΄Π΅ $$$$$$ β Π»ΠΎΠ³ΠΈΠ½ Π²Π°ΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π² amplitude, ****** β Π½ΠΎΠΌΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π¨Π°Π³ 2. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π½ΡΠΆΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠΆΠ΅ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°Π½Ρ, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ½ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ (Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·Π°Π½Ρ Π²Π΅ΡΡΠΈΠΈ, Π³Π΄Π΅ ΡΠΌΠ΅ΡΡΠ½ΠΎ):
- requests (2.10.0)- ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π· api Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
- pandas (1.0.1) β ΡΡΠ΅Π½ΠΈΠ΅ json, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ dataframe ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ»
- zipfile β ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π°ΡΡ ΠΈΠ²Π°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· API
- gzip β ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° json ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· .gz
- os β ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΠ²Π°
- time β Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ, ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ°
- 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. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π² Amplitude
ΠΠ°ΡΠ΅ΡΠ΅ΠΌ Π½Π°ΡΠ°Π»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ 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. Π‘ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΠ²Π° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ
ΠΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π°ΡΡ ΠΈΠ²Π° ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ filename. ΠΠ»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Ρ ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ + ΡΠΊΠ°Π·ΡΠ²Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ amplitude. ΠΠ°Π»Π΅Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΡ 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 ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π² dataframe Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π°Π΄ΠΎ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΡΡΡ Π½Π° ΡΠ²ΠΎΠΉ, Π° Π²ΠΌΠ΅ΡΡΠΎ 000000 Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ· Amplitude (Π»ΠΈΠ±ΠΎ ΠΎΡΠΊΡΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΏΡΡΡ, ΠΊΡΠ΄Π° Π±ΡΠ» ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ Π°ΡΡ ΠΈΠ², ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π²Π½ΡΡΡΠΈ).
ΠΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ°ΠΏΠΈΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΡΠ΅ΠΉΠΌΠ°, time.sleep(1) Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ tqdm, Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ .gz ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΡΠ°Π·Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pandas ΡΠΈΡΠ°Π΅ΠΌ json ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π·Π°Π΄Π°Π½Π½ΡΠΉ dataframe.
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ 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. ΠΠ°ΠΏΠΈΡΡ dataframe Π² 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 β id ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, 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))
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com