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

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

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

Q&A

解決済

1回答

1376閲覧

Pythonを用いた.csvファイルデータの抽出と保存について

K.ooo

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

0グッド

0クリップ

投稿2020/05/15 05:53

python を使用しcsvファイルの情報を取得し新規の.xlsxに保存したいと思っております。
内容としましては以下の通りです。
①同作業ファイル内にt=1s.csv~t=10s.csvファイルの読み込み
(それぞれある時間における結果を示しております)

②時刻歴データとして処理し新規のワークブックに保存する

なお、実際にはt=1s.csv~t=10s.csvのような時間における結果ファイルが大量にあり、作業フォルダ内のすべてのファイルの結果を一つの.xlsxファイルに保存したいとおもっております。(listなどで定義し繰り返し処理を行う?)

現状、.csvファイルをインポートするところまではなんとか出来た?のですが、
その先の処理が分からず苦戦しております。
仕事で求められている反面、私自身プログラミングが未経験であり何かアドバイス頂きたく、
僭越ながら質問させていただきました。
ご回答いただけると幸いです。

以下現在作成したコードと参考図をご参照下さい。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
import win32com.client
import os
import openpyxl
import csv

location='C:/Users/AAA/pythontest' #作業ディレクトリを指定
os.chdir(location)

names=os.listdir(path=location)
num=len(names) #numはファイル数、

kk=0
for kk in range(0,num):
file=names[kk] #ここで、すべて作業ディレクトリ内のすべてのファイル名を取得する。

import openpyxl #openpyxlを使うときの宣言文

import glob #globを使うときの宣言文
wb = openpyxl.Workbook() #ワークブックの新規作成
sheet = wb.active #ワークブックをアクティブにする
sheet.title = 'test_sheet_1' #シートに名前を付ける
wb.save('test.xlsx') #ワークブック名を保存する。
glob.glob("*.xlsx")

![イメージ説明](f9cca480904559fe4799ff69c77b3511.png)

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

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

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

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

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

x98000

2020/05/15 07:09

例を見る限り、xlsxではなくCSV出力でも問題なさそうな気がしますが、xlsxで無ければならない制約があるのなら提示してください。 CSV出力の方が簡単に出来ると思いますので。
K.ooo

2020/05/15 07:37

コメントありがとうございます。 .csvでも大きな問題はないです。 後にまとめたデータをもとにグラフ作成等をそのまましたいと考えておりましたが 一度.csvで出力した後でも可能なので。
x98000

2020/05/15 07:42

CSVのインポートが出来たのならCSVのエクスポートも出来ると思います。まずはコードを書いてみて不明点を質問に追記してみてはどうでしょうか。
yamap55

2020/05/15 08:11

1. 画像にあるCSVのA列は2の欲しい出力ファイルのB列で良い? 2. CSVのB列はxとなっており、2のA列はtとなっているが、これは気にしないでも良い? 両方YESの場合、特定のフォルダ内にあるCSVを全部読んで、1列目の値をxlsxファイルにどんどん書き込めば良い?(ヘッダはとりあえず考慮しない)
meg_

2020/05/15 08:29

コードは「コードの挿入」で記入してください。
K.ooo

2020/05/15 08:56

→yamap_55 様 画像が切れてしまっており申し訳ありません。 1はYESです 2のイメージとしては例、t=1s.csvの処理 CSV:A2の値を抽出→.xlsx:B2に書き込む  CSV:A3の値を抽出→.xlsx:C2に書き込む  CSV:A4の値を抽出→.xlsx:D2に書き込む  ↓ A7まで繰り返す t=2s.csvの処理 CSV:A2の値を抽出→.xlsx:B3に書き込む  CSV:A3の値を抽出→.xlsx:C3に書き込む  CSV:A4の値を抽出→.xlsx:D3に書き込む  ↓ A7まで繰り返す この処理をすべてのセルに行うといった感じです。
guest

回答1

0

ベストアンサー

csv出力で良いとの事なので書いてみました。
ちなみに、特に大容量でない限りは先にファイルを全部読んでデータを準備して、まとめて書いたほうが処理的にもわかりやすくなるかと思います。

python

1import csv 2import os 3 4location = '/d/data' 5output_name = 'output.csv' 6 7names = os.listdir(path=location) 8 9def f(location, name): 10 with open(os.path.join(location, name)) as f: 11 reader = csv.reader(f) 12 header = next(reader) 13 return [name] + [row[0] for row in reader] 14 15file_data = [f(location, name) for name in names] 16data = list(zip(*file_data)) 17 18with open(os.path.join(location, output_name), 'w') as f: 19 csv.writer(f).writerows(data)

※特に改行コードや文字コードは意識していませんので、必要があれば適切な値に変更してください。
※zipを使用しているので、各ファイルは同じ行数を想定しています。

投稿2020/05/15 09:38

yamap55

総合スコア1376

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

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

K.ooo

2020/05/15 13:46

ありがとうございます。求めていたデータを出力することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問