🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

Q&A

1回答

454閲覧

Pandasに関する質問です。初歩的な質問で申し訳ございません。

ss767_777

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

0グッド

0クリップ

投稿2020/12/08 15:26

編集2020/12/08 16:37

Python 内の pandas に関する質問です。
非常に初歩的な質問で申し訳ありません。

イメージ説明

上記のようなcsvファイルがあり、1つのシリアル番号別のcsvファイルを作成したく考えております。
データに関してはこの下に10万行ほどあり、1つのシリアル番号につき、20~30行ほどのデータがございます。

イメージ説明

import

1import pandas as pd 2 3df = pd.read_csv('----------.csv', encoding='cp932' ) 4df2 = df["シリアル番号"].drop_duplicates() 5 6df4 = (df[["日付", "日時", "目標番号", "シリアル番号"]]) 7 8df5 = (df4[df4["シリアル番号"] == df2 ])

2行目でcsvファイルを読み込み、
3行目で、csvファイル内の重複したシリアル番号を処理しました。
ここで、シリアル番号を1つずつ取り出したつもりです。

4行目で、同csvファイル内から必要な列を取り出し、
5行目で、3行目で取り出した重複の無いシリアル番号をそれぞれ代入し、
シリアル番号別に、4行目で取り出した特定の行に関するcsvファイルを作成したく考えています。

【期待する結果】

元のcsvファイル内の、重複したデータを削除したいわけではございません。
シリアル番号別のcsvファイルを、シリアル番号ごとに1つずつ作成したく考えております。

この先どう処理すれば良いのか分からず苦戦しております。

for文を使うべきだと思うのですが。。。
お力を貸して頂けませんでしょうか?

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

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

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

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

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

hentaiman

2020/12/08 15:31

そこまでやってたらさらにCSV出力したいデータのみ条件指定してto_csvするだけだと思うけど、どういった処理でforが必要だと思いましたか?
hentaiman

2020/12/08 15:36

あとコードみにくいから最低限投稿画面の説明読んで回答してくれる人たちが分かりやすい&読み易いように心掛けましょう。
ss767_777

2020/12/08 15:40 編集

質問ありがとうございます。 今回、複数の重複したシリアル番号が混在しているcsvファイルから、1つずつシリアル番号を取り出し、取り出した番号別のcsvファイル(df4で定義したもの)を作成したく考えております。 この質問について文献や質問サイトを参考にしたのですが、for文に関する説明を読んだ際に 各要素について順番に代入し処理を行う~との説明を拝見しました。 順番に、1つずつ代入 というワードから for文を使うのが相応しいと考えましたが、処理方法が分からず質問させて頂いた次第です。
hentaiman

2020/12/08 15:47

具体的なデータの提示が無いと何が適切かは分かりません。とりあえずサンプルデータを用意して載せてもらえれば色んな人が回答し易くなると思いますが。 あとコードはマークダウンで書いてください。サンプルデータをコード中に書く際も同様です。じゃないとコピペできない
hentaiman

2020/12/08 16:23

やはりforをどこで使うと思ってるのか分からないんだけど、重複削除して再度CSV出力したいっていうだけの事ですよね?
ss767_777

2020/12/08 16:28

質問ありがとうございます。 重複の削除については、シリアル番号を1つずつ代入するために行ったつもりです。 1つのシリアル番号につき、1つのcsvファイルを作成するプログラムを作りたいのですが、やはりfor文は不要でしょうか?
hentaiman

2020/12/08 16:33

失礼、やっと理解しました 要は (df4[df4["シリアル番号"] == df2 ] のdf2の部分が実際にはdf2じゃなくてユニークなシリアルごとってことですね で、データ自体は重複を削除したい訳ではないと。 あってますか? こういうのはソースデータ(コードとは別で)と期待する結果が書かれていると質問読む側としては理解しやすい
ss767_777

2020/12/08 16:38

その通りでございます。 説明不足で、大変申し訳ございませんでした。
hentaiman

2020/12/08 17:04 編集

通常このような質問でのサンプルデータと言ったら回答に書いたコードの1行目を 期待する結果と言ったら1行目と同じ形の整形したもの、またはテーブルマークダウンで整形したものを記載します でないと回答する側からしたら何をしたいのか意図が読み取りにくいし、サンプルデータを回答者が用意するなんて面倒なので回答する気は激減するし、それ以前に質問読む気も失せてしまいます。 ご留意を。
guest

回答1

0

サンプルデータ載せて貰えないので簡単なサンプルデータとコードを作りました。
これを参考に頑張ってください。

df=pd.DataFrame({'serial':['0001', '0001', '0002', '0003'],'data':['りんご', 'ごりら', 'らっぱ', 'ぱいそん']}) df=df.groupby('serial') [data.to_csv(f"{serial}.csv") for serial, data in df]

投稿2020/12/08 16:57

hentaiman

総合スコア6426

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問