import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(30, 25), dpi=300) # 创建 9 个子图 # 读取数据 df = pd.read_excel("test_Fd.xlsx") # 按照 FenDMC 进行分组 groups = df.groupby("FenDMC") # 遍历每个分组,绘制子图 for idx, (name, group) in enumerate(groups): ax = axes[idx] sns.heatmap(groups.pivot(index=["FactoryName","JiJXH"], columns="shi", values="avg_sale"), cmap='YlGnBu', annot=True, fmt='.2f', cbar_kws={'label': '单台售价', 'shrink':0.8, 'aspect':40}, ax=ax) ax.set_xlabel(None) ax.set_ylabel(None) ax.set_title(name, fontsize=20) # 调整边距,使图像居中 plt.tight_layout() # 保存图像 plt.savefig('heatmap.png') # 显示图像 plt.show()提示'DataFrameGroupBy' object has no attribute 'pivot'
时间: 2024-01-24 16:03:35 浏览: 98
这个错误通常是因为您正在尝试在GroupBy对象上调用pivot方法。请注意,只有DataFrame对象才有pivot方法,因此您需要先将GroupBy对象转换为DataFrame对象,然后再调用pivot方法。您可以尝试使用以下代码:
```
df_grouped = df.groupby(["FactoryName", "JiJXH", "shi"])["avg_sale"].mean().reset_index()
df_pivot = df_grouped.pivot(index=["FactoryName", "JiJXH"], columns="shi", values="avg_sale")
sns.heatmap(df_pivot, cmap='YlGnBu', annot=True, fmt='.2f',
cbar_kws={'label': '单台售价', 'shrink':0.8, 'aspect':40}, ax=ax)
```
在这个例子中,我们首先使用groupby方法对DataFrame对象进行分组,并计算每个组中“avg_sale”的平均值。接下来,我们使用reset_index方法将结果转换为DataFrame对象。最后,我们使用pivot方法将结果重新塑造为一个新的DataFrame对象,该对象具有一个行索引和一个列索引,其中行索引是“FactoryName”和“JiJXH”,列索引是“shi”,值是“avg_sale”的平均值。然后我们可以使用这个新的DataFrame对象来绘制热力图。
相关问题
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Fangsong' # 指定使用宋体字体 fig= plt.figure(figsize=(30, 25), dpi=300) ax1= fig.add_subplot(131) # 读取数据 df = pd.read_excel("test_Fd.xlsx") 把Fendmc是140-160马力四轮驱动动力换挡拖拉机查找出来
你可以使用 Pandas 的 loc 函数来筛选符合条件的数据,代码如下:
```python
df.loc[(df['Fendmc'] == '140-160马力四轮驱动动力换挡拖拉机')]
```
其中,`df['Fendmc']` 表示选取数据表中名为 Fendmc 的列,`==` 表示判断是否相等,`'140-160马力四轮驱动动力换挡拖拉机'` 则为要查找的值。
这行代码会返回符合条件的所有行数据,你可以根据需要进行进一步处理。
import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus']=False %matplotlib inline
这段代码主要是进行Python数据分析所需要引入的常用库的导入和设置matplotlib图表显示中文的字体和解决负号显示问题,同时使用%matplotlib inline命令设置图表以内嵌形式显示在notebook页面中。其中,numpy是Python中处理科学计算的一个重要库,pandas是Python中用于数据分析的库,seaborn是基于matplotlib的数据可视化库,matplotlib是Python中常用的绘图库。
阅读全文