Я загрузил несколько файлов в поиграйте ЗДЕСЬ. На сайте: Первая строка каждого файла — заголовок; 1 строка соответствует 1 записи.. ВНИМАНИЕ! общий объем загрузки довольно велик (~1,3 ГБ)! Этот эксперимент проводился на сервере AWS (
Код: Выделить всё
t2.medium
Код: Выделить всё
wget https://s3.amazonaws.com/amazon-reviews-pds/tsv/amazon_reviews_us_Shoes_v1_00.tsv.gz \
https://s3.amazonaws.com/amazon-reviews-pds/tsv/amazon_reviews_us_Office_Products_v1_00.tsv.gz \
https://s3.amazonaws.com/amazon-reviews-pds/tsv/amazon_reviews_us_Software_v1_00.tsv.gz \
https://s3.amazonaws.com/amazon-reviews-pds/tsv/amazon_reviews_us_Personal_Care_Appliances_v1_00.tsv .gz \
https://s3.amazonaws.com/amazon-reviews-pds/tsv/amazon_reviews_us_Watches_v1_00.tsv.gz
gunzip *
Код: Выделить всё
drwxrwxr-x 3 ubuntu ubuntu 4096 Jun 2 12:44 ../
-rw-rw-r-- 1 ubuntu ubuntu 1243069057 Nov 25 2017 amazon_reviews_us_Office_Products_v1_00.tsv
-rw-rw-r-- 1 ubuntu ubuntu 44891575 Nov 25 2017 amazon_reviews_us_Personal_Care_Appliances_v1_00.tsv
-rw-rw-r-- 1 ubuntu ubuntu 1570176560 Nov 25 2017 amazon_reviews_us_Shoes_v1_00.tsv
-rw-rw-r-- 1 ubuntu ubuntu 249565371 Nov 25 2017 amazon_reviews_us_Software_v1_00.tsv
-rw-rw-r-- 1 ubuntu ubuntu 412542975 Nov 25 2017 amazon_reviews_us_Watches_v1_00.tsv
$ find . -type f -exec cat {} + | wc -l
8398139
$ find . -name '*.tsv' | xargs wc -l
2642435 ./amazon_reviews_us_Office_Products_v1_00.tsv
341932 ./amazon_reviews_us_Software_v1_00.tsv
85982 ./amazon_reviews_us_Personal_Care_Appliances_v1_00.tsv
4366917 ./amazon_reviews_us_Shoes_v1_00.tsv
960873 ./amazon_reviews_us_Watches_v1_00.tsv
8398139 total
Код: Выделить всё
import polars as pl
csvfile = "~/data/amazon/*.tsv"
(
pl.scan_csv(csvfile, separator = '\t')
.select(
pl.len()
)
.collect()
)
shape: (1, 1)
┌─────────┐
│ len │
│ --- │
│ u32 │
╞═════════╡
│ 4186305 │
└─────────┘
Код: Выделить всё
csvfile = "~/data/amazon/*.tsv"
(
... pl.scan_csv(csvfile, separator = '\t')
... .select(
... pl.col("product_category").count()
... )
... .collect()
... )
shape: (1, 1)
┌──────────────────┐
│ product_category │
│ --- │
│ u32 │
╞══════════════════╡
│ 7126095 │
└──────────────────┘
Код: Выделить всё
shape: (1, 1)
┌──────────────────┐
│ product_category │
│ --- │
│ u32 │
╞══════════════════╡
│ 7125569 │
└──────────────────┘
Код: Выделить всё
csvfile = "~/data/amazon/*.tsv"
(
pl.scan_csv(csvfile, separator = '\t')
.group_by("product_category")
.agg(pl.col("product_category").count().alias("counts"))
.collect(streaming = True)
.filter(pl.col('counts') > 100)
.sort(pl.col("counts"), descending = True)
.select(
pl.col('counts').sum()
)
)
shape: (1, 1)
┌─────────┐
│ counts │
│ --- │
│ u32 │
╞═════════╡
│ 7125553 │
└─────────┘
Еще несколько проверок с использованием R:
Код: Выделить всё
library(vroom)
library(purrr)
library(glue)
library(logger)
amazon
Подробнее здесь: [url]https://stackoverflow.com/questions/76391153/python-polars-lazy-frame-row-count-not-equal-wc-l[/url]