私は、タブ区切りのテキストファイルで特定の列のヒストグラムを生成するスクリプトを作成しています。現在、プレースホルダとして使用しているハードコーディングされた列番号から1つのグラフが作成されます。データの列からグラフを作成するPythonコード
入力表は次のようなものになります。
SAMPID TRAIT COHORT AGE BMI WEIGHT WAIST HEIGHT LDL HDL
123 LDL STUDY1 52 32.2 97.1 102 149 212.5 21.4
456 LDL STUDY1 33 33.7 77.0 101 161 233.2 61.2
789 LDL STUDY2 51 25.1 67.1 107 162 231.1 21.3
abc LDL STUDY2 76 33.1 80.4 99 134 220.5 21.2
...
をそして、私は次のコードを持っている:
import csv
import numpy
from matplotlib import pyplot
r = csv.reader(open("path",'r'), delimiter = '\t')
input_table=[]
for row in r:
input_table.append(row)
column=[]
missing=0
nonmissing=0
for E in input_table[1:3635]: # the number of rows in the input table
if E[8] == "": missing+=1 # [8] is hard coded now, want to change this to column header name "LDL"
else:
nonmissing +=1
column.append(float(E[8]))
pyplot.hist(column, bins=20, label="the label") # how to handle multiple histogram outputs if multiple column headers are specified?
print "n = ", nonmissing
print "numer of missing values: ", missing
pyplot.show()
誰も私がいずれかの操作を行うために私のプログラムを改善/拡張できるようになるアドバイスを提供することができますが次のうちどれですか?ヘッダ名で指定された列から
グラフデータではなく、列番号、そのグラフを作成した後
に/表示いくつかのヒストグラムを作成するために、複数のヘッダ名を含むリスト上
反復列内の特定の値(すなわち、特定のサンプルIDまたは特定のCOHORT値)によって指定されるように、データのサブセットのみを含む。
ここには表示されていないコンポーネントの1つは、最終的に、個別にグラフ化する必要があるヘッダー(すなわち、「HDL」、「LDL」、「HEIGHT」)のリストを含む別個の入力ファイルを持つことです。グリッドのような方法。
必要に応じて追加情報を入力できます。
私に戻ってくれてありがとう、私はあなたの意見に同意します。 CSVモジュールのDictReaderメソッドがこのタスクに適しているかどうか知っていますか?私はドキュメンテーションを見ていましたが、プログラミングに新しいので、少し混乱しています。(明らかでない場合) – alexhli
私はそのようなライブラリを使ったことは一度もありませんが、 DictReaderメソッドについてはhttp://docs.python.org/dev/library/csv.htmlを参照してください。これは、最小限の労力で構造ジョブを完了させるために必要なものです。あなたのデータはきちんと整理されているようですが、データの正確性を保証する良い方法として、 'restKey'と 'restVal'生成されたdictフィールドに関するドキュメントには何が書かれているのでしょうか。しかし、最初の試行では、それらをバイパスしてください。うまくいくはずです。 – Francisco