实验目的: 学会使用Pandas操作csv数据集,并进行可视化。 数据集描述: 该数据集是CNKI中与“中药毒理反应”相关的文献信息,包含文章题目、作者、来源(出版社)、摘要、发表时间等信息。 实验要求: 1. 使用Pandas读取数据集。 2. 统计每年的发文数量,并绘制折线图。 3. 统计出版社的发文量信息,列出发文前10位的出版社。 4. 使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图。(需安装jieba分词和词云工具包)。 结果提交: 使用jupyter notebook进行程序编写,形成.ipynb文件,使用“学号姓名”的方式进行命名,数据文件放在该文件同目录下。
时间: 2023-11-27 13:50:13 浏览: 67
这是本人做pandas练习时使用的csv数据.zip
好的,这个实验的要求比较明确,我将按照要求一步一步地指导你完成实验。
首先,你需要下载数据集并放到程序同目录下,然后使用Pandas读取数据集。你可以使用以下代码:
```python
import pandas as pd
df = pd.read_csv('cnki.csv', encoding='gbk')
```
其中,'cnki.csv'是你下载的数据集文件名,需要根据实际情况进行修改。encoding='gbk'是因为该数据集使用了gbk编码方式。
接下来,我们需要统计每年的发文数量,并绘制折线图。你可以使用以下代码:
```python
import matplotlib.pyplot as plt
df['year'] = df['发表时间'].str[:4]
year_count = df['year'].value_counts().sort_index()
plt.plot(year_count.index, year_count.values)
plt.title('每年发文数量')
plt.xlabel('年份')
plt.ylabel('发文数量')
plt.show()
```
其中,我们新添加了一个year列,用于存储每篇文章的发表年份。然后使用value_counts()方法统计每个年份的文章数量,并使用sort_index()方法按照年份排序。最后使用Matplotlib绘制折线图。
接下来,我们需要统计出版社的发文量信息,列出发文前10位的出版社。你可以使用以下代码:
```python
publisher_count = df['来源'].value_counts()
top10_publisher = publisher_count.head(10)
print(top10_publisher)
```
其中,我们使用value_counts()方法统计每个出版社的文章数量,然后使用head(10)方法取出前10个出版社。
最后,我们需要使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图。你需要先安装jieba和wordcloud库,可以使用以下代码:
```python
!pip install jieba
!pip install wordcloud
```
安装完成后,你可以使用以下代码制作词云图:
```python
import jieba
from wordcloud import WordCloud
text = ''.join(df['摘要'])
words = jieba.cut(text)
word_count = {}
for word in words:
if len(word) >= 2:
word_count[word] = word_count.get(word, 0) + 1
wordcloud = WordCloud(background_color='white', font_path='msyh.ttc').generate_from_frequencies(word_count)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
```
其中,我们首先使用''.join(df['摘要'])将所有摘要拼接成一个字符串,然后使用jieba.cut()方法对摘要进行分词。接着,我们使用一个字典word_count来统计每个词出现的次数。注意,我们只统计长度大于等于2的词。最后,我们使用WordCloud库生成词云图,并使用Matplotlib显示。
完成实验后,你需要将程序保存为.ipynb文件,并将数据集文件放在同一目录下,最后以“学号姓名”的方式进行命名。
阅读全文