pandas 来自 csv 文件的正负值条形图图
pandas plot of bar chart of postitive and negative values from a csv file
我有一个包含数据的 csv 文件,我有一个包含正值和负值的列,我需要以一种有 2 个条的方式绘制此列的平均值,一个用于负值,一个用于积极的价值观。
看看我的数据:
timestamp,heure,lat,lon,ampl,type
2006-01-01 00:00:00,13:58:43,33.837,-9.205,10.3,1
2006-01-02 00:00:00,00:07:28,34.5293,-10.2384,17.7,1
2007-02-01 00:00:00,23:01:03,35.0617,-1.435,-17.1,2
2007-02-02 00:00:00,01:14:29,36.5685,0.9043,36.8,1
....
2011-12-31 00:00:00,05:03:51,34.1919,-12.5061,-48.9,1
我正在使用这段代码绘制我的数据:
names =["timestamp","heure","lat","lon","ampl","type"]
data = pd.read_csv('flash.txt',names=names, parse_dates=['timestamp'],index_col=['timestamp'], dayfirst=True)
data['ampl'] = data['ampl'].abs()
yearly = data.groupby(data.index.month)['ampl'].count()
ax = yearly.plot(kind='bar')
所以,我需要取消关联相关列的值并且有 2 个柱而不是一个,我该如何继续?
首先创建新列 sign
numpy.sign
and map
dict
。
然后将新的列名添加到 groupby
,按 size
and reshape by unstack
聚合:
data['sign'] = np.sign(data['ampl']).map({1:'+', -1:'-', 0:'0'})
data['ampl'] = data['ampl'].abs()
yearly = data.groupby([data.index.month, 'sign'])['ampl'].size().unstack()
yearly.plot(kind='bar')
我有一个包含数据的 csv 文件,我有一个包含正值和负值的列,我需要以一种有 2 个条的方式绘制此列的平均值,一个用于负值,一个用于积极的价值观。 看看我的数据:
timestamp,heure,lat,lon,ampl,type
2006-01-01 00:00:00,13:58:43,33.837,-9.205,10.3,1
2006-01-02 00:00:00,00:07:28,34.5293,-10.2384,17.7,1
2007-02-01 00:00:00,23:01:03,35.0617,-1.435,-17.1,2
2007-02-02 00:00:00,01:14:29,36.5685,0.9043,36.8,1
....
2011-12-31 00:00:00,05:03:51,34.1919,-12.5061,-48.9,1
我正在使用这段代码绘制我的数据:
names =["timestamp","heure","lat","lon","ampl","type"]
data = pd.read_csv('flash.txt',names=names, parse_dates=['timestamp'],index_col=['timestamp'], dayfirst=True)
data['ampl'] = data['ampl'].abs()
yearly = data.groupby(data.index.month)['ampl'].count()
ax = yearly.plot(kind='bar')
所以,我需要取消关联相关列的值并且有 2 个柱而不是一个,我该如何继续?
首先创建新列 sign
numpy.sign
and map
dict
。
然后将新的列名添加到 groupby
,按 size
and reshape by unstack
聚合:
data['sign'] = np.sign(data['ampl']).map({1:'+', -1:'-', 0:'0'})
data['ampl'] = data['ampl'].abs()
yearly = data.groupby([data.index.month, 'sign'])['ampl'].size().unstack()
yearly.plot(kind='bar')