プロットアプリケーションによって生成されたデータ系列があり、それらを保存して.csvで自由に呼び出したいとします。
各データセットには4つの特性があります。名前、x値のセット(xvals
)、y値のセット(yvals
)、および親。
私は現在、Excelで生成する種類の.csvファイルを想像しており、次のことを考えています。
name, DataSet1
xvals, 1,2,3,4,5
yvals, 1,4,9,16,25
parent, None
<linebreak>
name, DataSet2
xvals, 1,2,3,4,5
yvals, 21,23,24,25,26
parent, None
<linebreak>
等々。それはあまり自然な感じではなく、実装はちょっと醜いように見えます。誰か提案はありますか?
私のアプリケーションでは、各DataSeriesインスタンスに必要なすべてのデータがすでに含まれています。インスタンスオブジェクト自体(またはそれらのコレクション)を実際に保存できれば、当面は同様に機能します(ただし、最終的にはExcelで使用するためにデータをエクスポートできるようにしたいと思います)。
Pythonに伝えたい:
ファイル内のすべての行を読み取ります。「空白」行を読み取るたびに、区切り文字を挿入します。行の各塊をデータセットと見なします。
パッケージの各行の最初の項目を読んでください。これは、行の残りのセルに含まれる情報のタイプです。その参照を取得し、隣接するすべてのセルのデータをリストとして、対応するオブジェクト属性に配置します。
私にはこれを実現する方法がありますが、それは「GOTO」ステートメントを思い出させるキャラクターやポジションへの厄介な特定の呼び出しをたくさん含みます。もっと有機的でPythonicなものが欲しいです。
現在のアプローチ:
class DataSet(object):
def __init__(self, name, xvals, yvals, parent=None):
self.name = name
self.xvals = xvals
self.yvals = yvals
self.parent = parent
loaded_data = csv.reader(open('csv_data.csv', 'r'), delimiter=',')
container = []
dict = {}
for row in loaded_data:
if list(row)[0] == '':
container.append(dict)
dict = {}
else:
dict[list(row)[0]] = filter(None,list(row)[1:])
container.append(dict)