透過 API 檢索幅度數據

介紹

由於其簡單的事件設定和視覺化靈活性,Amplitude 已證明自己是一款出色的產品分析工具。 通常需要建立自己的歸因模型、叢集使用者或在另一個 BI 系統中建立儀表板。 只能使用 Amplitude 的原始事件資料來執行此類詐欺。 本文將告訴您如何以最少的程式設計知識獲取這些數據。

先決條件

  1. Amplitude 中的一個項目,其中事件已正確配置並收集了統計數據
  2. Python 已安裝(我正在使用 3.8.3 版本),潛在讀者至少已經可以在基礎層級上使用它

指令

步驟1.取得API-key和secret-key

上傳資料首先需要取得API key和秘鑰。

您可以透過以下路徑找到它們:

  1. 「管理資料」(位於螢幕左下角)
  2. 選擇要從中下載資料的所需項目並前往該項目
  3. 在開啟的項目選單中,選擇“項目設定”
  4. 我們找到 API 金鑰和秘密金鑰字串,複製並將它們保存在安全的地方。

無需點擊,您就可以點擊鏈接,該鏈接通常如下所示:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
其中 $$$$$$ 是您組織的振幅登入名,******** 是項目編號

第 2 步:檢查所需庫是否存在

好消息是,您幾乎肯定已經預設安裝或下載了這些庫,但您需要檢查。 我在撰寫本文時使用的庫的完整列表(括號中的版本在適當的情況下表示):

  1. requests (2.10.0) - 透過 api 發送請求以接收數據
  2. pandas (1.0.1) - 讀取 json,建立資料幀,然後寫入文件
  3. zipfile - 從透過 API 接收的檔案中提取文件
  4. gzip - 從 .gz 解壓縮 json 文件
  5. os - 從解壓縮的存檔中取得文件列表
  6. time - 可選,測量腳本的運行時間
  7. 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

添加評論