質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

530閲覧

14万件のデータが入っているデータフレームを5万件ごとのCSV3つに分割したい

Ponta2929

総合スコア16

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/03/01 03:41

前提

Pythonでjupyter notebookでコードを書いている。
ウェブデータをBS4でスクレイピングしてきてPANDASで一つのデータフレームにまとめ
統合したCSVを吐き出している。

そのデータをツールにインポートしようとしたが
1CSV当たりの上限が5万でインポート出来ず。

やりたいこと

14万行あるデータフレームを5万以下のCSVファイル複数に分割したい。
今後、データ数が15万以上になる可能性があるため、データが15万以上に増えても分割出来るようにしたい。

課題

ツールにデータを入れる上で5万件しかインポート出来ない。
しかし、複数のデータを突合した一つのデータフレームは14万行がある。

現状

dfという変数名にデータフレーム型で14万のレコードが入っています。
5万以下にまとめて複数しようと試みたが、上手く出せない。

分からない事

どのように処理すれば、上のような処理を出来るのか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

linuxでかまわなければ、splitコマンドで14万行のcsvを行数指定で複数ファイルに分割してしまう、というのもありかなと思いました。
https://atmarkit.itmedia.co.jp/ait/articles/1711/24/news016.html

投稿2022/03/01 13:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

python

1import pandas as pd 2 3N = 140_000 4M = 50_000 5 6# generate dataframe 7df = pd.DataFrame({'data': range(N)}) 8print(f'Num rows of dataframe: {len(df)}') 9 10# split every M rows 11df_splitted = [df[M*i:M*(i+1)] for i in range(N//M+1)] 12#for i in range(N//M+1): 13# df[M*i:M*(i+1)].to_csv(f'data_{i:02d}.csv', index=False) 14 15# describe each dataframes 16for i, dfx in enumerate(df_splitted): 17 print(f'dataframe{i} num rows: {len(dfx)}') 18 print(f'dataframe{i} head:\n {dfx.head(3)}') 19 print(f'dataframe{i} tail:\n {dfx.tail(3)}\n') 20 21# 22Num rows of dataframe: 140000 23dataframe0 num rows: 50000 24dataframe0 head: 25 data 260 0 271 1 282 2 29dataframe0 tail: 30 data 3149997 49997 3249998 49998 3349999 49999 34 35dataframe1 num rows: 50000 36dataframe1 head: 37 data 3850000 50000 3950001 50001 4050002 50002 41dataframe1 tail: 42 data 4399997 99997 4499998 99998 4599999 99999 46 47dataframe2 num rows: 40000 48dataframe2 head: 49 data 50100000 100000 51100001 100001 52100002 100002 53dataframe2 tail: 54 data 55139997 139997 56139998 139998 57139999 139999

投稿2022/03/01 04:12

編集2022/03/01 04:29
melian

総合スコア19749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ponta2929

2022/03/01 05:32

ありがとうございます! CSVは作れたのですが、中身が空っぽ(正確にはdataというカラムに1-50000の数値が入っている)でした... お手数おかけして申し訳ございません。 何か解決方法があれば教えて頂けませんか?
melian

2022/03/01 05:36

上記の df はサンプルとして作成したものですので、そちらで作成した実際のデータフレームに置き換えて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問