介绍
由于其简单的事件设置和可视化灵活性,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))
来源: habr.com