当前位置:   article > 正文

python 11Pandas数据可视化实验

python 11Pandas数据可视化实验

实验目的:

学会使用Pandas操作数据集,并进行可视化。

数据集描述:

该数据集是CNKI中与“中药毒理反应”相关的文献信息,包含文章题目、作者、来源(出版社)、摘要、发表时间等信息。

实验要求:

  1. 使用Pandas读取数据集。
  2. 统计每年的发文数量,并绘制折线图。
  3. 统计出版社的发文量信息,列出发文前10位的出版社。
  4. 使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图。(需安装jieba分词和词云工具包)。

实验过程:

为了完成这个实验,你需要在你的Python环境中安装Pandas, jieba, matplotlib, 和 wordcloud这几个库。如果你还没有安装,可以通过以下命令进行安装:

pip install pandas jieba matplotlib wordcloud

导入库,导入文件(文件名称为 ansi.csv),打印几行看看导入情况

  1. import pandas as pd
  2. df = pd.read_csv('./ansi.csv')
  3. df.head()

通过输出查看文件的表头是什么

print(df.columns)

统计每年的发文数量,并绘制折线图

  1. import matplotlib.pyplot as plt
  2. plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
  3. plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
  4. df['年'] = pd.to_datetime(df['5'], format='%Y-%m-%d %H:%M', errors='coerce').dt.year
  5. year = df['年'].value_counts().sort_index()
  6. plt.figure(figsize=(10, 6))
  7. plt.plot(year.index, year.values, marker='o')
  8. plt.title('每年中药毒理反应文献发表数量')
  9. plt.xlabel('年份')
  10. plt.ylabel('发表数量')
  11. plt.grid(True)
  12. plt.show()

统计出版社的发文量信息,列出发文前10位的出版社

  1. publisher = df['2'].value_counts()
  2. top = publisher.head(10)
  3. print("发文前10位的出版社:")
  4. print(top)

使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图

  1. import jieba
  2. from wordcloud import WordCloud
  3. import matplotlib.pyplot as plt
  4. def tokenize_abstracts(abstracts):
  5. all_words = []
  6. for abstract in abstracts:
  7. words = jieba.cut(abstract, cut_all=False)
  8. all_words.extend(words)
  9. return all_words
  10. abstracts = df['4'].dropna().tolist()
  11. # 分词
  12. all_words = tokenize_abstracts(abstracts)
  13. # 计算词频
  14. word_freq = {word: all_words.count(word) for word in set(all_words)}
  15. # 制作词云
  16. wordcloud = WordCloud(font_path='simhei.ttf',width=800, height=600, background_color='white', max_words=30).generate_from_frequencies(word_freq)
  17. # 显示词云图
  18. plt.figure(figsize=(10, 8))
  19. plt.imshow(wordcloud, interpolation='bilinear')
  20. plt.axis("off")
  21. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/533074
推荐阅读
相关标签
  

闽ICP备14008679号