Pandas: чтение случайной выборки данных с использованием read_json - PullRequest
1 голос
/ 20 января 2020

Я хотел бы прочитать случайную выборку большого файла .bz2.

Аналогично тому, как вы читаете в образце csv, вот так:

import pandas
import random

n = 1000000 #number of records in file
s = 10000 #desired sample size
filename = "data.csv"
skip = sorted(random.sample(xrange(n),n-s))
df = pandas.read_csv(filename, skiprows=skip)

Я понял, как читать файл кусками, но это не случайно.

import os, json
import pandas as pd
import numpy as np
import glob
import random
pd.set_option('display.max_columns', None)

temp = pd.DataFrame()

path_to_json = '/content/drive/My Drive/Loghost/' 

json_pattern = os.path.join(path_to_json,'*.bz2')
file_list = glob.glob(json_pattern)

for file in file_list:
    chunks = pd.read_json(file, lines=True, chunksize=3000000)
    i = 0
    chunk_list = []
    for chunk in chunks:
      i+=1
      user = chunk[random.sample(chunk.UserName)] # i want to take a random sample of 100 users
      chunk_list.append(user)
      print("Progress:", i)
      del chunk
      df = pd.concat(chunk_list, sort = True)
    temp = temp.append(df, sort = True)

В приведенной выше строке я пытаюсь рандомизировать строки, выбирая случайные выборки пользователей, но, похоже, это не работает. Любые идеи?

...