私はパンダライブラリとクロスタブを使用して、データを操作する頻度データフレームを作成しています。次のコードでは、csv で読み取り、データフレームを作成してから、頻度データフレームであるクロス集計を作成します。次に、データの断面を取得して、列とその下のデータを引き出します。
def dataforgraphs():
d = readcsv()
df = DataFrame(d)
d1=df[1]
d0=df[0]
d2=df[2]
d3=df[3]
d4=df[4]
cta = pd.crosstab(d0,[d2,d1,d3],rownames=['Date'],colnames=['RigStat','Prov','Obj'], margins=False)
ndfABA= ndf.xs('AB', level='Prov', axis=1)
ABrigs = ndfAB.xs(['BIT','GAS','OIL'],axis=1)
ここから、ラベル「BIT」、「GAS」、または「OIL」を持たないすべての空白値を含む仮想列の断面を引き出すことができないという問題があります。Excel のピボット テーブルでは、ピボット テーブルに含める列を選択するときに (空白の) ボックスをオンにすることでこれを行うことができます。ここで同じことを行い、空白のすべての頻度カウントを取得します。
助言がありますか?
現在、次の出力が得られます。これには、指定された 3 つの列と以下の頻度のみが含まれます。
OIL GAS BIT
Date
01-01-2007 1 6 3
01-02-2007 2 4 4
01-03-2007 1 6 3
01-04-2007 5 6 4
01-05-2007 1 7 3
01-06-2007 6 6 6
01-07-2007 1 8 3
01-08-2007 5 6 6
01-09-2007 1 6 3
01-10-2007 1 7 3
代わりに、OIL、GAS、または BIT としてリストされていないすべての空白値の列を含む、次のようなものを取得したいと思います (または、それに関するものとしてリストされています)。
OIL GAS BIT "blank'
Date
01-01-2007 1 6 3 10
01-02-2007 2 4 4 11
01-03-2007 1 6 3 12
01-04-2007 5 6 4 10
01-05-2007 1 7 3 1
01-06-2007 6 6 6 4
01-07-2007 1 8 3 5
01-08-2007 5 6 6 2
01-09-2007 1 6 3 5
01-10-2007 1 7 3 2
pandas クロス集計データフレームに入るデータは、次のように構成されています。
Date Obj Operator Type Address
01-01-2007 OIL ABC HZ 112 W Ave
01-01-2007 GAS ABC HZ 112 W Ave
01-01-2007 GAS ABV HZ 113 W Ave
01-01-2007 BIT NCH HZ 114 W Ave
01-01-2007 CNR HZ 115 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-03-2007 CNRL HZ 112 W Ave
01-03-2007 CNRL HZ 112 W Ave
ここから、pandas クロス集計は OIL、GAS、BIT の頻度を日付別にキャプチャする頻度表を作成しますが、空白値のカウントを取得する方法が見つかりません。Obj がリストされていない列があることに注意してください。これらは、クエリできるようにしたいクロスタブでキャプチャされていない値です。
助言がありますか?