介紹
由於其簡單的事件設定和視覺化靈活性,Amplitude 已證明自己是一款出色的產品分析工具。 通常需要建立自己的歸因模型、叢集使用者或在另一個 BI 系統中建立儀表板。 只能使用 Amplitude 的原始事件資料來執行此類詐欺。 本文將告訴您如何以最少的程式設計知識獲取這些數據。
先決條件
- Amplitude 中的一個項目,其中事件已正確配置並收集了統計數據
- Python 已安裝(我正在使用 3.8.3 版本),潛在讀者至少已經可以在基礎層級上使用它
指令
步驟1.取得API-key和secret-key
上傳資料首先需要取得API key和秘鑰。
您可以透過以下路徑找到它們:
- 「管理資料」(位於螢幕左下角)
- 選擇要從中下載資料的所需項目並前往該項目
- 在開啟的項目選單中,選擇“項目設定”
- 我們找到 API 金鑰和秘密金鑰字串,複製並將它們保存在安全的地方。
無需點擊,您就可以點擊鏈接,該鏈接通常如下所示:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
其中 $$$$$$ 是您組織的振幅登入名,******** 是項目編號
第 2 步:檢查所需庫是否存在
好消息是,您幾乎肯定已經預設安裝或下載了這些庫,但您需要檢查。 我在撰寫本文時使用的庫的完整列表(括號中的版本在適當的情況下表示):
- requests (2.10.0) - 透過 api 發送請求以接收數據
- pandas (1.0.1) - 讀取 json,建立資料幀,然後寫入文件
- zipfile - 從透過 API 接收的檔案中提取文件
- gzip - 從 .gz 解壓縮 json 文件
- 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 收到的回應記錄到檔案中。
# Скачивание архива с данными
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 - 客戶端 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))
來源: www.habr.com