-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathraw_data.py
More file actions
38 lines (33 loc) · 1.32 KB
/
raw_data.py
File metadata and controls
38 lines (33 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pandas as pd
import gzip
import json
from pathlib import Path
class RawData:
def __init__(self, gz_file_path, user_id=None):
"""
Инициализация объекта для обработки данных.
:param gz_file_path: путь к файлу .gz
:param user_id: идентификатор пользователя (например, 704)
"""
self._user_id = user_id
self._raw_data = None # types annotation
self.read_gz(gz_file_path)
def read_gz(self, gz_file_path):
"""
Чтение .gz файла, содержащего построчные JSON объекты.
Преобразование в таблицу pandas.DataFrame.
"""
with gzip.open(gz_file_path, 'rt', encoding='utf-8') as f:
content = f.read()
json_data = [json.loads(line) for line in content.strip().split('\n') if line]
self._raw_data = pd.json_normalize(json_data)
def get_raw_data(self):
"""
Возвращает сырые данные в формате pandas.DataFrame.
"""
return self._raw_data
def get_user_id(self):
"""
Возвращает идентификатор пользователя.
"""
return self._user_id