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

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

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

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

pandas

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

Q&A

解決済

1回答

1787閲覧

Pythonで複数のファイルを読み込んで足し合わせたいです。

happy_boy

総合スコア9

Python

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

pandas

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

1グッド

1クリップ

投稿2020/04/19 06:20

編集2020/04/19 06:35

前提・実現したいこと

物理学の研究で、時間に対する電圧の変化をデータで測定しました。その電圧の平均的な時間変化を求めたいです。
そのためにPython3でpandasを用いて複数のファイルを読み込んで、その右側の配列要素同士を足し合わせたいです。
例えば
file1 file2   ・・・
1 60 1 67
2 54 2 59
3 50 3 53
4 45 4 47
5 41 5 41
という.csvや.datなりを読み込んで、要素を足し合わせて
sum
1 127
2 123
3 103
4 92
5 82
というファイルを作りたいです。
そのためにとりあえずファイルの要素の足し合わせをしています。
ファイルを読み込んだ際にintにできておらず、エラーメッセージが表示されます。

発生している問題・エラーメッセージ

TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output parameter (typecode 'l') according to the casting rule ''same_kind''

該当のソースコード

Python3

1import numpy as np 2import pandas as pd 3import glob 4import csv 5 6df1 = pd.read_csv("demo.csv",header=None) 7nn = np.array 8nn = df1.values 9#df2 = pd.read_csv("demo2.csv",header=None) 10adf = glob.glob("demo*.csv") 11 12li = [] 13 14for filename in adf: 15 df = pd.read_csv(filename, header=None,delimiter=" ") 16 li.append(df) 17 np = np.array 18 np = df.values 19 nn += np 20 21 #print(li) 22 print(nn) 23 #print(adf) 24 25 26 27frame = pd.concat(li, axis=0, ignore_index=True)

試したこと

https://qiita.com/airnanasi_qiita/items/337656cf520de711717e
https://qiita.com/u1and0/items/4d9a5a497f356729014a
ここのサイトを参考にして、python初心者ながらどうにかしてみました。
どうにもならなかったです。

補足情報(FW/ツールのバージョンなど)

ubuntu:18.04
Python:3.6.9
vim:8.0.1453

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問のコードは、pandasで結合するコードと、numpyでの演算のコードが混ざりあってよくわからなくなっておりますが。。

とりあえず、pandasを使うのであれば、データを全て結合した後に足し合わせるのが簡単ではないでしょうか。

demo1.csv

CSV

11 60 22 54 33 50 44 45 55 41

demo2.csv

CSV

11 67 22 59 33 53 44 47 55 41

として、

Python

1import pandas as pd 2import glob 3 4adf = glob.glob("demo*.csv") 5li = [] 6for filename in adf: 7 df = pd.read_csv(filename, header=None, delimiter=" ", index_col=0) 8 li.append(df) 9 10df = pd.concat(li, axis=1, ignore_index=True) 11print(df) 12# 0 1 13#1 60 67 14#2 54 59 15#3 50 53 16#4 45 47 17#5 41 41 18 19print(df.sum(axis=1)) 20#1 127 21#2 113 22#3 103 23#4 92 24#5 82 25#dtype: int64

データの形式が変わると、当然読み込み時のパラメータも変わりますのでご注意ください。

投稿2020/04/19 07:13

magichan

総合スコア15898

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

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

happy_boy

2020/04/20 08:23

返信遅くなってすいません。 エラーが出てしまったのですが、自分の読み込むファイルに問題があったようで、今は解決しました。 pandasとnumpyを理解していなのできちんと勉強します。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問