实验要求 实验目的: 学会使用Pandas操作数据集,并进行可视化。 数据集描述: 该数据集是CNKI中与“中药毒理反应”相关的文献信息,包含文章题目、作者、来源(出版社)、摘要、发表时间等信息。 实验要求: 1. 使用Pandas读取数据集。 2. 统计每年的发文数量,并绘制折线图。 3. 统计出版社的发文量信息,列出发文前10位的出版社。 4. 使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图。(需安装jieba分词和词云工具包)。 结果提交: 使用jupyter notebook进行程序编写,形成.ipynb文件,使用“学号姓名”的方式进行命名,数据文件放在该文件同目录下。
时间: 2023-11-28 19:50:14 浏览: 89
Pandas 测试用数据集
好的,这个实验比较有趣,我们来一步一步实现。
首先,我们需要导入必要的库:pandas、matplotlib、jieba和wordcloud。如果你还没有安装这些库,请在命令行中运行以下命令安装:
```
pip install pandas matplotlib jieba wordcloud
```
然后,我们开始实验:
## 1. 使用Pandas读取数据集
首先,我们需要导入Pandas库,并使用read_csv函数读取CSV格式的数据集。
```python
import pandas as pd
# 读取CSV文件
df = pd.read_csv('data.csv')
```
假设我们的数据集文件名为"data.csv",并且它在当前工作目录中。
读入数据后,我们可以使用head函数查看前5行数据:
```python
print(df.head())
```
## 2. 统计每年的发文数量,并绘制折线图
我们可以使用Pandas库中的groupby函数对年份进行分组,然后计算每年的文章数量。
```python
# 提取年份列
df['year'] = pd.to_datetime(df['发表时间']).dt.year
# 按年份分组,计算每年的文章数量
count_by_year = df.groupby('year').size()
print(count_by_year)
```
最后,我们可以使用matplotlib库绘制折线图:
```python
import matplotlib.pyplot as plt
plt.plot(count_by_year.index, count_by_year.values)
plt.xlabel('Year')
plt.ylabel('Article Count')
plt.title('Number of articles published each year')
plt.show()
```
## 3. 统计出版社的发文量信息,列出发文前10位的出版社
我们可以使用Pandas库中的groupby函数对出版社进行分组,然后计算每个出版社的文章数量。
```python
# 按出版社分组,计算每个出版社的文章数量
count_by_publisher = df.groupby('出版社').size()
# 按文章数量降序排序,获取前10名出版社
top_publishers = count_by_publisher.sort_values(ascending=False).head(10)
print(top_publishers)
```
## 4. 使用jieba分词,对摘要进行分词统计,制作词频前30位的词云图
我们需要先安装jieba和wordcloud库:
```
pip install jieba wordcloud
```
然后,我们可以使用jieba库对摘要进行分词:
```python
import jieba
# 定义分词函数
def cut_words(text):
words = jieba.cut(text)
return ' '.join(words)
# 对摘要进行分词
df['摘要'] = df['摘要'].apply(cut_words)
```
接着,我们可以使用wordcloud库制作词云图:
```python
from wordcloud import WordCloud
# 合并所有摘要为一个字符串
text = ' '.join(df['摘要'].tolist())
# 生成词云图
wordcloud = WordCloud(width=800, height=400, background_color='white', max_words=30).generate(text)
# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
完整代码如下:
阅读全文