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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

Q&A

解決済

1回答

3981閲覧

python csvをxlsxファイルに変換し、Excel関数を入力し、出てきた値を読み込みたい

rr9500sc

総合スコア16

CSV

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

0グッド

0クリップ

投稿2020/06/08 05:10

プログラミング初心者です。
拙い質問ですがよろしくお願いします。

csvファイルをxlsxファイルに変換し、
変換されたファイルの空いているセルにExcel関数を入れ、求められた値を抽出するプログラムを組んでいます。

Excel関数を入れるところまでは出来たのですが
変換されたxlsxファイルの数値が全て文字列という扱いになっており、
計算が上手くされませんでした。

困っている点

・xlsxファイル内の数字が文字列として扱われており、関数が上手く計算されない
・printでE2のセルを抽出した際、式がそのまま表れてしまう。

以上の問題を解決するコードを探しております。

以下、コードです。

python import pandas as pd import re import csv import openpyxl with open('dataname.csv', 'r', newline='') as file, \ open('file_out.csv', 'w', newline='') as fileout: text = re.sub(r'\s* ', ',', file.read()) print(text, file = fileout) print('置換完了') col_names = [1,2,3,4,5] df = pd.read_csv('file_out.csv',encoding='cp932',names=col_names) df.to_excel('excel-data.xlsx') print('CSV > Excel変換完了') wb = openpyxl.load_workbook('excel-data.xlsx',data_only=True) sheet = wb.worksheets[0] sheet["E2"] = '=AVERAGEIFS(D17:D2000,C17:C2000,">=0",C17:C2000,"<=1.5")' print(sheet['E2'].value) wb.save('excel-data.xlsx')

以上を入力して出来たxlsxファイルがこちらです。

1    2    3    4    5 V1.0.2 Interpolation #DIV/0! レコード数 872 サンプリング周波数(Hz) 100 0m位置 7 高さ補正 2 コメント1 12 コメント2 タイプ(0:なし 1:3点移動平均 2:バターワース) 2 フィルタ遮断周波数 4 フィルタ回数 3 遮断周波数 1 始終点処理点数 20 Saturday 19.10.2019 16:18:51 補間位置情報数 0 ID 距離(m) 速度(m/s) 0 -5.689224 0 1 -5.694527 0 2 -5.699684 -0.507 3 -5.70468 -0.491 4 -5.709504 -0.473 5 -5.71415 -0.455 6 -5.718608 -0.436 7 -5.722875 -0.417 8 -5.726947 -0.397 9 -5.730822 -0.378 10 -5.734498 -0.358 11 -5.737978 -0.338 12 -5.741262 -0.319 13 -5.744353 -0.3 14 -5.747254 -0.281 15 -5.749968 -0.262 16 -5.7525 -0.244 17 -5.754853 -0.227 18 -5.757033 -0.21 19 -5.759046 -0.193 20 -5.760897 -0.178 21 -5.762592 -0.162 22 -5.76414 -0.148 23 -5.765546 -0.134 24 -5.766817 -0.121 25 -5.767962 -0.109 26 -5.768986 -0.097 27 -5.769897 -0.086 28 -5.770699 -0.075 29 -5.771398 -0.065 30 -5.772 -0.056 31 -5.77251 -0.047 32 -5.772934 -0.039 33 -5.773278 -0.031 34 -5.773548 -0.024 35 -5.77375 -0.017 36 -5.773889 -0.011 37 -5.77397 -0.006 38 -5.773996 0 39 -5.773973 0.004 40 -5.773905 0.009 41 -5.773793 0.013 42 -5.773642 0.017 43 -5.773454 0.02 44 -5.773232 0.024 45 -5.77298 0.027 46 -5.772699 0.029 47 -5.772393 0.032 48 -5.772064 0.034 49 -5.771713 0.036 50 -5.771344 0.038 51 -5.770957 0.039 52 -5.770556 0.041 53 -5.770142 0.042 54 -5.769718 0.043 55 -5.769286 0.043 56 -5.768847 0.044 57 -5.768404 0.044 58 -5.767957 0.045 59 -5.767509 0.045 60 -5.76706 0.045 61 -5.766612 0.045 62 -5.766164 0.045 以下略

xlsxファイルには簡単な足し算も
Errorが出てしまうため、文字列として扱われることが原因で間違いなさそうです。
お手数ですが回答いただけたらと思います。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

xlsxファイル内の数字が文字列として扱われており、関数が上手く計算されない

dataframe側の各セルの型を数値に変換したうえでto_excelすればexcel上でも数値扱いになります。
変換する際は行番号、列番号を適切に指定してastypeしてください。変換先は実数値なのでfloat64で良いでしょう。

例:

python

1df[:][15:78] = df[:][15:78].astype('float64') # 全列、15行目~78行目を変換

※行列指定は質問文から正確に読み取れないのでこのままではエラーになると思われます。適宜修正してください。
(まあ、型を適切に修正しても#DIV/0だと思いますが・・・)

・printでE2のセルを抽出した際、式がそのまま表れてしまう。

数式の計算結果はExcelが計算することなので、openpyxl側からは数式しか見ることができません。

投稿2020/06/08 11:22

hope_mucci

総合スコア4447

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

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

rr9500sc

2020/06/09 06:15

こんにちは。 回答ありがとうございます。 無事数値化でき、計算してくれました。 printの件もありがとうございます 試行錯誤してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問