''''冷夜''' for name,groupmin in df.groupby("年"): # print(name)#1960-2012 groupmin.sort_values(by=['日最低温(0.1℃)'], inplace=True, ascending=False) #ascending=True从-1000到0到1000排列 Lye=groupmin[groupmin["日最低温(0.1℃)"] <groupmin["日最低温(0.1℃)"].quantile(0.1)] #取每年前10% # print( groupmin) b=list(Lye.count()) #年冷夜天数 # print('年冷夜天数:',b) #冬季 groupmin1L_1=Lye[Lye['月']==1] groupmin1L_2=Lye[Lye['月']==2] groupmin1L_12=Lye[Lye['月']==12] aL1=list(groupmin1L_1.count()) aL2=list(groupmin1L_2.count()) aL12=list(groupmin1L_12.count()) # AL=aL1+aL2+aL12 # print(AL) AL=aL1[0]+aL2[0]+aL12[0] # print(AL) #冬季暖夜 array = np.asarray(AL) # print(array) x=array print(x) fig,ax=plt.subplots() y=range(0,36) ax.plot(y,x,'ro-',lw=1,markersize=2,label='line1') plt.show() ,runfile('C:/Users/不想太忙/Desktop/实验1-4_2023年/shiyan11.py', wdir='C:/Users/不想太忙/Desktop/实验1-4_2023年') 37 Traceback (most recent call last): File ~\Desktop\实验1-4_2023年\shiyan11.py:427 ax.plot(y,x,'ro-',lw=1,markersize=2,label='line1') File D:\fanle\lib\site-packages\matplotlib\axes\_axes.py:1743 in plot lines = [*self._get_lines(*args, data=data, **kwargs)] File D:\fanle\lib\site-packages\matplotlib\axes\_base.py:273 in __call__ yield from self._plot_args(this, kwargs) File D:\fanle\lib\site-packages\matplotlib\axes\_base.py:399 in _plot_args raise ValueError(f"x and y must have same first dimension, but " ValueError: x and y must have same first dimension, but have shapes (36,) and (1,)
时间: 2024-03-03 18:53:17 浏览: 109
根据错误信息显示,发现 `x` 和 `y` 的维度不匹配。`x` 的维度是 `(36,)`,而 `y` 的维度是 `(1,)`,所以会报错。
可以通过以下代码修改:
```python
x = np.asarray([AL])
print(x)
fig, ax = plt.subplots()
y = range(0, 36)
ax.plot(y, x[0], 'ro-', lw=1, markersize=2, label='line1')
plt.show()
```
这里使用 `np.asarray()` 将 `AL` 转换为数组,并且将其外面套一个列表,以便 `x` 和 `y` 的维度匹配。
相关问题
##连接list words=np.concatenate(Red_df.cutword) ##统计词频 word_df= pd.DataFrame({"Word":words}) word_stat=word_df.groupby(by=["Word"]).size().reset_index(name="number") word_stat=word_stat.reset_index().sort_values(by="number",ascending=False) word_stat["wordlen"]=word_stat.Word.apply(len) word_stat #去除长度大于5的词 print(np.where(word_stat.Word.apply(len)<5)) word_stat=word_stat.loc[word_stat.Word.apply(len)<5,:] word_stat=word_stat.sort_values(by="number",ascending=False) word_stat
这段代码看起来像是在对一个列表中的词进行词频统计,并且筛选出长度小于5的词。具体的操作包括:
1. 将一个名为`words`的列表中的所有词进行连接,得到一个大字符串。
2. 将这个大字符串转换为一个DataFrame对象,其中每个词作为一行。
3. 对这个DataFrame按照词进行分组,并统计每个词出现的次数。
4. 添加一列`wordlen`,表示每个词的长度。
5. 筛选出长度小于5的词,并按照出现次数进行降序排序。
请注意,这段代码并没有输出任何结果,只是对数据进行了处理。如果需要查看结果,需要在代码末尾添加输出语句。
import pandas as pd df = pd.read_csv('lending.dat') df['year'] = pd.to_datetime(df['date']).dt.year df_book_count = df[['bid', 'title']].drop_duplicates().merge( df.groupby('bid').size().reset_index(name='count'), on='bid') top5_books = pd.DataFrame() for year in df['year'].unique(): df_year = df[df['year'] == year] if len(df_year) >= 5: # 只有当年份至少有 5 本书籍时,才计算前 5 本最受欢迎的书籍 # 按照每个书籍的借阅次数进行排序,并选择前 5 本书籍 df_year_sorted = df_book_count[df_book_count['bid'].isin(df_year['bid'])].sort_values('count', ascending=False).head(5) # 将年份信息添加到 DataFrame 中 df_year_sorted['year'] = year top5_books = pd.concat([top5_books, df_year_sorted], ignore_index=True) # 输出结果 print(top5_books[['year', 'title', 'count']])统计每年借阅量排前五的图书及其借阅量对其进行新颖的可视化展示
对于这个问题,可以使用Python中的数据可视化工具Matplotlib或者Seaborn来实现。以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
import seaborn as sns
# 使用Seaborn设置样式
sns.set_style("whitegrid")
# 绘制柱状图
fig, ax = plt.subplots(figsize=(10, 6))
sns.barplot(x='year', y='count', hue='title', data=top5_books, ax=ax)
# 设置标题和标签
ax.set_title('Top 5 Books Borrowed Each Year')
ax.set_xlabel('Year')
ax.set_ylabel('Number of Borrows')
# 添加图例
ax.legend(loc='upper right')
# 显示图形
plt.show()
```
这个代码会生成一个柱状图,横轴是年份,纵轴是借阅量,每个颜色代表一本图书。你可以根据实际需要调整图形的大小、颜色、字体等参数。
阅读全文