将 pandas 系列聚合到 DataFrame 和可视化表示中
Aggregating pandas series into a DataFrame and visual representation
我有三个 pandas 系列,分别是:Col_data
、C_PV_data
和 C_elec_data
。每个都有这些值:
Col_data:
0 625814.205486
1 782267.756857
2 938721.308229
Name: 7, dtype: object
C_PV_data:
0 2039032.206909
1 2548790.258636
2 3058548.310363
Name: 3, dtype: object
C_elec_data:
0 1337523.743009
1 1671904.678761
2 2006285.614513
Name: 0, dtype: object
我想将它们聚合成一个 DataFrame,将该 DataFrame 导出到 .xlsx 文件,其中每一列都称为变量。例如:
Col_data
C_PV_data
C_elec_data
625814.205486
2039032.206909
1337523.743009
782267.756857
2548790.258636
1671904.678761
938721.308229
3058548.310363
2006285.614513
最后,我想用一个图表来表示每一列,其中中心值是一条线,该线上有两个点,分别表示最低值和最高值。例如,图表将是这样的:
好的,给你:
初始化
Col_data = pd.Series([
625814.205486,
782267.756857,
938721.308229])
C_PV_data = pd.Series([
2039032.206909,
2548790.258636,
3058548.310363])
C_elec_data = pd.Series([
1337523.743009,
1671904.678761,
2006285.614513])
作为 df
df = pd.concat(
[Col_data, C_PV_data, C_elec_data], axis=1,
keys=['Col_data', 'C_PV_data', 'C_elec_data'])
>>> df
Col_data C_PV_data C_elec_data
0 625814.205486 2.039032e+06 1.337524e+06
1 782267.756857 2.548790e+06 1.671905e+06
2 938721.308229 3.058548e+06 2.006286e+06
旁注:我总是不喜欢重复。上面的以下替代方法是 DRY(不要重复自己),但可能不太清楚:
keys = ['Col_data', 'C_PV_data', 'C_elec_data']
d = locals() # just for DRY...
df = pd.concat([d[k] for k in keys], axis=1, keys=keys)
到 xlsx
假设您已经 openpyxl
安装:
df.to_excel('foo.xlsx', index=False)
箱线图
编辑:(并另存为 PNG)
ax = df.loc[[0,1,1,1,2]].plot.box()
ax.figure.savefig('costs.png')
我有三个 pandas 系列,分别是:Col_data
、C_PV_data
和 C_elec_data
。每个都有这些值:
Col_data:
0 625814.205486
1 782267.756857
2 938721.308229
Name: 7, dtype: object
C_PV_data:
0 2039032.206909
1 2548790.258636
2 3058548.310363
Name: 3, dtype: object
C_elec_data:
0 1337523.743009
1 1671904.678761
2 2006285.614513
Name: 0, dtype: object
我想将它们聚合成一个 DataFrame,将该 DataFrame 导出到 .xlsx 文件,其中每一列都称为变量。例如:
Col_data | C_PV_data | C_elec_data |
---|---|---|
625814.205486 | 2039032.206909 | 1337523.743009 |
782267.756857 | 2548790.258636 | 1671904.678761 |
938721.308229 | 3058548.310363 | 2006285.614513 |
最后,我想用一个图表来表示每一列,其中中心值是一条线,该线上有两个点,分别表示最低值和最高值。例如,图表将是这样的:
好的,给你:
初始化
Col_data = pd.Series([
625814.205486,
782267.756857,
938721.308229])
C_PV_data = pd.Series([
2039032.206909,
2548790.258636,
3058548.310363])
C_elec_data = pd.Series([
1337523.743009,
1671904.678761,
2006285.614513])
作为 df
df = pd.concat(
[Col_data, C_PV_data, C_elec_data], axis=1,
keys=['Col_data', 'C_PV_data', 'C_elec_data'])
>>> df
Col_data C_PV_data C_elec_data
0 625814.205486 2.039032e+06 1.337524e+06
1 782267.756857 2.548790e+06 1.671905e+06
2 938721.308229 3.058548e+06 2.006286e+06
旁注:我总是不喜欢重复。上面的以下替代方法是 DRY(不要重复自己),但可能不太清楚:
keys = ['Col_data', 'C_PV_data', 'C_elec_data']
d = locals() # just for DRY...
df = pd.concat([d[k] for k in keys], axis=1, keys=keys)
到 xlsx
假设您已经 openpyxl
安装:
df.to_excel('foo.xlsx', index=False)
箱线图
编辑:(并另存为 PNG)
ax = df.loc[[0,1,1,1,2]].plot.box()
ax.figure.savefig('costs.png')