2017-05-19 6 views
0

私はこれは非常に基本的な質問でなければならないが、奇妙なことに、私はオンライン読んリソースは次の操作を実行する方法について非常に明確でないようで理解:パンダで個々の列を呼び出すにはどうすればいいですか?

どのようにすることができます私はインデックス特定の列pandasで?

たとえば、csvからデータをインポートした後、私はpandas Seriesオブジェクトを個別の日付とともに、それぞれの日付に対応するドル額を持っています。

ここでは、月単位でグループ化して、その月のそれぞれの金額を追加したいと思います。インデックス作成の列が月、次の列がその月のドル金額の合計である配列を作成する予定です。私はこの配列を取って、そこから別のpandas Seriesオブジェクトを作成します。

私の問題は、私が持っている現在のパンダシリーズオブジェクトから特定の列を呼び出すことができないということです。

助けが必要ですか?

編集に追加する:

from pandas import Series 
from matplotlib import pyplot 
import numpy as np 

series = Series.from_csv('FCdata.csv', header=0, parse_dates = [0], index_col =0) 

print(series) 

pyplot.plot(series) 
pyplot.show() # this successfully plots the x-axis (date) with the y-axis (dollar amount) 

dates = series[0] # this is where I try to call the column, but with no luck 

これは私のデータはCSV形式で次のようになります。

Dates Amount 
1/1/2015 112 
1/2/2015 65 
1/3/2015 63 
1/4/2015 125 
1/5/2015 135 
1/6/2015 56 
1/7/2015 55 
1/12/2015 84 
1/27/2015 69 
1/28/2015 133 
1/29/2015 52 
1/30/2015 91 
2/2/2015 144 
2/3/2015 114 
2/4/2015 59 
2/5/2015 95 
2/6/2015 72 
2/9/2015 73 
2/10/2015 119 
2/11/2015 133 
2/12/2015 128 
2/13/2015 141 
2/17/2015 105 
2/18/2015 107 
2/19/2015 81 
2/20/2015 52 
2/23/2015 135 
2/24/2015 65 
2/25/2015 58 
2/26/2015 144 
2/27/2015 102 
3/2/2015 95 
3/3/2015 98 
+1

イムわからない私は従いますが、直列に月のドルの量を得るために:

enter image description here

そしてdf.resample('M').sum().plot()が生成しますpd.groupby(s、by = s.index.month).sum() '' s'は 'Series'オブジェクトです。列には列がありません。列はdataFrames用です。 –

+0

'pd.read_csv'は' Series'オブジェクトを返してはいけません。ただし、データに1つのカラムしかなければ、1つ以上のカラムがあると言います。カラムにアクセスするための 'DataFrame'オブジェクトを返さなければなりません。あなたはどのようにCSVファイルを読んでいますか? – xgord

+0

ご回答いただきありがとうございます。コードを瞬間的に更新します – daOnlyBG

答えて

2

あなたがシリーズにCSVファイルを読んでいます。 Seriesは1次元のオブジェクトです。それに関連付けられた列はありません。あなたはそのシリーズ(日付)のインデックスを見て、おそらくそれが別の列だと思うかもしれませんが、それはそうではありません。

は、次の2つの選択肢があります:あなたは(reset_index()またはto_frameまたはシリーズとしてそれを使用するを呼び出すことにより、いずれかのデータフレームに変換することができ

series.resample('M').sum() 
Out: 
Dates 
2015-01-31 1040 
2015-02-28 1927 
2015-03-31  193 
Freq: M, Name: Amount, dtype: int64 

すでにインデックスが日付としてフォーマットしておりますので、月ごとにグループ化します。私はシリーズとしてそれを維持することをお勧めしたいので、リサンプルと非常に簡単です

しかし、あなたはいつもとデータフレームに変換することができます:。

df = series.to_frame('Value') 

今、df['Value']を使用してその単一の列を選択できます。リサンプリングは、データフレームとシリーズの両方を行うことができます。

df.resample('M').sum() 
Out: 
      Value 
Dates    
2015-01-31 1040 
2015-02-28 1927 
2015-03-31 193 

そして、あなたはプロットでそれを使用したい場合は、インデックスにアクセスすることができます

series.index # df.index would return the same 
Out: 
DatetimeIndex(['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04', 
       '2015-01-05', '2015-01-06', '2015-01-07', '2015-01-12', 
       '2015-01-27', '2015-01-28', '2015-01-29', '2015-01-30', 
       '2015-02-02', '2015-02-03', '2015-02-04', '2015-02-05', 
       '2015-02-06', '2015-02-09', '2015-02-10', '2015-02-11', 
       '2015-02-12', '2015-02-13', '2015-02-17', '2015-02-18', 
       '2015-02-19', '2015-02-20', '2015-02-23', '2015-02-24', 
       '2015-02-25', '2015-02-26', '2015-02-27', '2015-03-02', 
       '2015-03-03'], 
       dtype='datetime64[ns]', name='Dates', freq=None) 

注:基本的な、時間についてパンダのプロットツールを使用することができます。

df.plot()を生成します。あなたができる、

enter image description here

+1

素晴らしい答えをありがとう。あなたは私の誤解を明確にし、私に代替案の詳細な説明を提供することで余分なマイルを進めました。 – daOnlyBG