PS D:\vscode\python\网易云歌曲评论采集与分析> & D:/python/python.exe d:/vscode/python/网易云歌曲评论采集与分析/代码/wef.py d:\vscode\python\网易云歌曲评论采集与分析\代码\wef.py:52: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead. hourly = df.set_index('时间').resample('H').size() Traceback (most recent call last): File "d:\vscode\python\网易云歌曲评论采集与分析\代码\wef.py", line 95, in <module> generate_wordcloud() File "d:\vscode\python\网易云歌曲评论采集与分析\代码\wef.py", line 67, in generate_wordcloud with open('stopwords.txt', 'r', encoding='utf-8') as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'stopwords.txt'
时间: 2025-05-28 11:00:39 浏览: 28
<think>好的,我现在需要解决用户遇到的这两个错误:一个是FutureWarning关于'H'被弃用,另一个是FileNotFoundError找不到stopwords.txt文件。首先,我得分析这两个问题的原因,然后找到解决办法。第一个错误是用户在使用Pandas的resample方法时,使用了'H'作为参数,但Pandas未来版本将不再支持'H',建议改用'h'。这可能是因为Pandas在更新版本中统一了时间频率的别名,将大写改为小写,以保持一致性。用户需要将代码中的'H'替换为'h'来避免这个警告。第二个错误是找不到stopwords.txt文件。用户代码中尝试打开这个文件,但没有提供正确的路径,导致文件不存在。用户需要确保这个停用词文件存在于正确的目录下,或者在代码中指定完整的文件路径。此外,可能用户没有创建这个停用词文件,需要提供默认的停用词列表或自动生成该文件。
接下来,我需要考虑如何修改代码来解决这两个问题。对于第一个问题,直接替换'H'为'h'即可。第二个问题需要处理文件路径,并确保文件存在。可能需要添加异常处理,当文件不存在时,提供一个默认的停用词集合,或者自动创建该文件。此外,用户可能需要知道如何获取常用的中文停用词,比如使用已有的停用词库,如哈工大停用词列表等。
另外,用户可能没有将stopwords.txt放在正确的目录下,导致路径错误。代码中的相对路径可能基于当前工作目录,而实际运行时的工作目录可能不同,因此需要使用绝对路径来指定停用词文件的位置。或者,将停用词文件放在项目的数据目录中,并在代码中引用正确的路径。还需要考虑代码的健壮性,比如在读取文件时添加try-except块,捕获异常并提供友好的提示,或者自动生成默认的停用词文件。这样即使用户没有准备停用词文件,程序也能继续运行,尽管可能分析结果不够准确。
总结解决办法:替换时间频率参数,修正停用词文件路径,提供停用词文件的生成方法,增强代码的容错能力。</think>以下是针对这两个错误的完整解决方案:
### 错误1:时间频率参数过时
```python
# 修改前(触发警告)
hourly = df.set_index('时间').resample('H').size()
# 修改后(正确写法)
hourly = df.set_index('时间').resample('h').size()
```
### 错误2:缺失停用词文件解决方案
```python
# 增强版停用词处理函数
def load_stopwords(stop_path='stopwords.txt'):
"""智能加载停用词,自动生成基础停用词表"""
default_stopwords = {
'的', '了', '在', '是', '我', '和', '就', '都', '而', '及',
'与', '这', '那', '你', '他', '她', '我们', '他们', '啊', '哦'
}
try:
with open(stop_path, 'r', encoding='utf-8') as f:
return set(f.read().splitlines()) | default_stopwords
except FileNotFoundError:
print(f"未找到停用词文件,已生成基础停用词表到 {stop_path}")
with open(stop_path, 'w', encoding='utf-8') as f:
f.write('\n'.join(default_stopwords))
return default_stopwords
# 修改原始代码中的停用词加载部分
stopwords = load_stopwords(os.path.join(base_path, 'stopwords.txt'))
```
### 完整修正代码
```python
# ========== 曲线图:评论时间分布 ==========
def plot_line():
df['时间'] = pd.to_datetime(df['时间'])
# 使用小写h作为频率参数
hourly = df.set_index('时间').resample('h').size()
plt.figure(figsize=(14, 6))
hourly.plot(color='#ff9999', marker='o', linestyle='-')
plt.title('评论时间分布趋势', fontsize=15)
plt.savefig(os.path.join(data_path, '时间分布曲线图.png'))
# ========== 词云图 ==========
def generate_wordcloud():
# 使用绝对路径加载停用词
stop_file = os.path.join(base_path, 'stopwords.txt')
stopwords = load_stopwords(stop_file)
# 后续代码保持不变...
```
### 停用词文件自动生成器
```python
def init_stopwords_file():
"""初始化标准停用词表(包含中文常用停用词)"""
content = """的
了
在
是
我
和
就
都
而
及
与
这
那
你
他
她
我们
他们
啊
哦
...""" # 完整列表建议使用哈工大停用词表
stop_path = os.path.join(base_path, 'stopwords.txt')
if not os.path.exists(stop_path):
with open(stop_path, 'w', encoding='utf-8') as f:
f.write(content)
print("已生成标准停用词表")
if __name__ == "__main__":
init_stopwords_file()
# 原有主程序代码...
```
### 解决方案说明
1. **时间频率参数**:
- Pandas 2.0+ 版本开始统一使用小写字母表示时间频率
- `h`表示小时,`H`是旧版写法已被弃用
2. **停用词处理**:
- 使用绝对路径确保文件定位准确
- 添加自动生成基础停用词功能
- 建议使用标准停用词表(可从以下地址获取):
```
https://github.com/goto456/stopwords
```
阅读全文
相关推荐

















