2017-07-21 17 views
0

私は、温度、時間、減衰係数などを列挙した8つの列を持つテキストデータファイルを扱っています。私は、0.320から0.322の温度範囲でのみデータ行を取得する必要があります。 はここに私のデータのサンプルラインです(数千行があります):Pythonでのデータ処理

time temp acq. freq. amplitude damping  etc.... 
6.28444 0.32060 413.00000 117.39371 48.65073 286.00159 

私は気に唯一の列は、時間、温度、およびダンピングをしています。私はこれらの3つの値をリストに追加する必要がありますが、温度が指定された範囲内にあるときだけです(温度がすべて4ケルビンで上がっているデータがありますが、このデータはガーベージです)。私は、Python 3を使用しています

は、ここで私が試してみましたものですこれまで、私はこのコードを正しくのみという点で温度値のリストを埋めるなかったことを見ることができた私は、リストnewtempを印刷

f = open('alldata','r') 
c = f.readlines() 
temperature = [] 
newtemp = [] 
damping = [] 
time = [] 

for line in c [0:]: 
line = line.split() 
temperature.append(line[1]) 
damping.append(line[4]) 
time.append(line[0]) 

for i in temperature: 
if float(i)>0.320 and float(i)<0.325: 
    newtemp.append(float(i)) 

しかし、私のダンピングリストと時間リストには、その小さな温度範囲に対応する値だけが埋め込まれている必要があります。私はこのコードでそれを達成する方法がわかりません。

また、私はここに誰かによって推奨され、これを試してみました:

output = [] 
lines = open('alldata', 'r') 
for line in lines: 
temp = line.split() 
if float(temp[1]) > 0.320 and float(temp[1]) < 0.322: 
    output.append(line) 
print(output) 

そして、私はというエラーを取得:

IOPubデータ・レートを超過します。 ノートブックサーバは、クラッシュを避けるために、クライアントに出力 の送信を一時的に停止します。 この制限を変更するには、設定変数 --NotebookApp.iopub_data_rate_limitを設定します。

私は非常にコーディングに新しいので、愚かな質問であることが判明した場合はお詫び申し上げます。

+0

どう見ますか?それは、例えば、CSV、TSVまたはExcelですか? – tuomastik

+0

Pythonスクリプトを使用してファイルからデータを抽出しますか?既に何かを実装しようとしましたか?どのようなファイルがありますか?私たちがあなたを助けるために、より多くの情報を提供する必要があります。データの小さな例を提供してください。 – KelvinS

+0

どのような種類のファイルがありますか?エクセル、csv、txt?私はcsvをカバーする答えを投稿し、pythonでpandasモジュールを使用しています。 – sera

答えて

1

データ:ここ

temperature, time, coeff... 
0.32, 12:00:23, 2,.. 
0.43, 11:22:23, 3,.. 

、温度は、最初の列です。

output = [] 
lines = open('data.file', 'r') 
for line in lines: 
    temp = line.split(',') 
    if float(temp[0]) > 0.320 and float(temp[0]) < 0.322: 
     output.append(line) 
print output 
+0

これは素晴らしい例ですが、ファイルの種類とデータの区切りによって異なります。さらに、私は 'temp'変数を' float'に変換する必要があると思います。 – KelvinS

0

あなたはパンダモジュールを使用することができます:あなたはパンダがインストールされていない場合は

import pandas as pd 

# if the file with the data is an excel file use: 
df = pd.read_excel('data.xlsx') 

# if the file is csv 
df = pd.read_csv('data.csv') 

# if the column name of interest is named 'temperature' 
selected = df['temperature'][(df['temperature'] > 0.320) & (df['temperature'] < 0.322)] 

は、ファイルの形式であるhere