2017-07-04 5 views
0

私はいくつかの助けが必要なコードを書いていました。私が書いたコード(以下に掲載)はいくつかのことをしなければなりません。まずはヒストグラムをファイルから読み込んでそれに応じて作成できるはずです。ここで私はいくつかの助けが必要です。1)ビンの幅を必要な任意の幅(deltaT)に変更する方法を見つける必要があります。毎回ハードコードする必要はありません。さまざまなExcelファイルをPythonにインポートして実行し、別のExcelファイルとしてエクスポートすることができます。私は、私がコーディングするのがとても新しく、私が扱っているのはDataframeだとはっきりしていないと思います。コード:さまざまなExcelファイルのヒストグラムを自動化

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import openpyxl 
from pandas import ExcelWriter 

data = pd.read_excel('/Users/user/Desktop/Data/Book1.xlsx') 
counts, bins, patches = plt.hist(data.values, bins=range(0, 
int(max(data.values)+5), 5)) 
df = pd.DataFrame({'bin_leftedge': bins[:-1], 'count': counts}) 
plt.title('Data') 
plt.xlabel('Neuron') 
plt.ylabel('# of Spikes') 
plt.show() 

writer = pd.ExcelWriter('/Users/user/Desktop/Data/output.xlsx') 
df.to_excel(writer,'Sheet2') 
writer.save() 

私は別ののように読んでファイルをエクセル持ってみました。その後、

data2 = pd.read_excel('/Users/user/Desktop/Data/Book2.xlsx') 

とコードにそれを入れて、それが実行した、それだけで最初のエクセルファイルの結果を提供します(別のExcelファイルに出力します)。私は間違って何をしていますか?助けて頂ければ幸いです。

更新:

だから私は今、私はまだ把握することはできません唯一のことは、彼らは別のExcelファイルとしてエクスポートするために取得する方法です、それは複数のファイルを読み込み、その上でコードを実行するために取得することができましたそれらは適用されたコードと共に(ビン幅の変化に加えて)加えられる。

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import openpyxl 
from pandas import ExcelWriter 
import os 

for file in os.listdir('/Users/user/Desktop/Data'): 
    data = pd.read_excel('/Users/user/Desktop/Data/{0}'.format(file)) 
    counts, bins, patches = plt.hist(data.values, bins=range(0, 
    int(max(data.values)+5), 5)) 
    df = pd.DataFrame({'bin_leftedge': bins[:-1], 'count': counts}) 
    plt.title('Data') 
    plt.xlabel('Neuron') 
    plt.ylabel('# of Spikes') 
    plt.show() 

    writer = pd.ExcelWriter('/Users/user/Desktop/Data/ouput.xlsx') 
    df.to_excel(writer) 
    writer.save() 

は再び任意の助けを大幅に高く評価されている:私はビットにコードを変更しました。前もって感謝します。

+0

あなたの質問の解釈は、ヒストグラムをExcelファイル内の画像として保存することです。これは正しいです? – Xukrao

+0

私がする必要があるのは、excelファイルをbinの5ビン(私は変更の手助けが必要です)に入れてから、適用されたビンをExcelファイルにエクスポートすることです1つのファイル)。それは、数字の間に数が何回あるかを数えるリストのように見えます。例えば、[0,5]は、2つの数字があり、残りは2ずつ増えます。ディレクトリ内の複数のExcelファイルを読み込み、コードを適用しますが、出力されたファイルは1つだけで、インポートされたものはすべて出力しません。プロットはショーのためのものです。ありがとう –

答えて

1

名前付き出力xlsx Excelファイルがループ内で変更されることはないため、1つのファイルのみがエクスポートされるため、各繰り返しで上書きされます。以下の点を考慮して、元のExcelファイルに接尾辞の末尾に_Binsを追加します。

datadir = '/Users/user/Desktop/Data/' 

for file in os.listdir(datadir): 
    if file.endswith('.xlsx'): 
     data = pd.read_excel(os.path.join(datadir, file)) 

     #...data processing and graph output... 

     outfile = os.path.join(datadir, file.replace('.xlsx', '_bins.xlsx')) 
     writer = pd.ExcelWriter(outfile) 
     df.to_excel(writer) 
     writer.save() 
+0

それは働いてくれてありがとう兄さんありがとう!あなたは私の命を救いました –

関連する問題