一、案例学习
一、编程前的准备工作
1.配置好相应的 python 环境。
2.准备好需要处理的数据。
二、导入数据集
读取数据集,将古诗词数据集读取到 data 中,其数据集路径为:/data/shixunfiles/25e7c30b86628098543a7b03d04ecb76_1604025554485.csv
# 导入 numpy,pandas 库,用于读取 csv 文件,并对所读取的数据进行处理
import numpy as np
import pandas as pd
#读取数据集到 data 中
data = pd.read_csv(r'/data/shixunfiles/d4a509dafacf4685175609d0f317e832_1604299838697.csv')
三、数据概览
1.查看数据维度:通过查看数据维度我们可以得知所使用的数据集一共有多少条数据,每条数据是由多少个属性构成的。
# 看数据维度
print(data.shape)
2.查看数据集前 5 行数据:通过此条操作我们可以清晰且直观的看到数据的组成,能够知道每首古诗词的题目、所属朝代、作者以及具体内容。
#使用head()方法查看 data 中前五行的数据
data.head()
四、数据分析
1.我们先展示数据集中不同朝代古诗词的数量,通过其数量绘制古诗词在各朝代分布的饼状图。通过饼状图可以直观反映各个朝代的诗歌成就。
#显示不同朝代的诗歌数量
data.朝代.value_counts()
# 导入matplotlib库,绘制图像
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']
plt.figure(figsize=(10,10)) # 将画布设定为正方形,则绘制的饼图是正圆
label=['宋','明','清','唐','元','近现代','当代','南北朝','魏晋','金','隋','先秦','汉','辽'] # 定义饼图的标签,标签是列表
explode=[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] # 设定各项距离圆心 n 个半径
values=[287114,236957,90088,49195,37375,28419,28219,4586,3021,2741,1170,572,363,22]
plt.pie(values,explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图
plt.title('各大朝代古诗词数量分布')#绘制标题
plt.show()
2.按照朝代发展年代进行排序,依次是:先秦、汉、魏晋、南北朝、隋、隋末唐初、唐、唐末宋初、宋、宋末元初、元、元末明初、明、明末清初、清、清末近现代初、近现代、近现代末当代初、当代。
import matplotlib.pyplot as plt
# 处理乱码
plt.rcParams['font.sans-serif']=['SimHei']
x = ['先秦', '汉','魏晋', '南北朝','隋','隋末唐初','唐','唐末宋初','宋','宋末元初','元','元末明初','明','明末清初','清','清末近现代初','近现代','近现代末当代初','当代']
y = [570, 364, 3021, 4586,1170,472,49195,1118,287114,12058,37375,15736,236957,17700,90088,27829,28419,5374,28219]
# "r" 表示红色,ms用来设置*的大小
plt.plot(x, y, "r", marker='*', ms=5)
plt.xticks(rotation=75) # x轴坐标斜着显示
plt.xlabel("朝代名字")
plt.ylabel("古诗词数量")
plt.title("朝代古诗词数量发展史")
# 在折线图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式
for x1, y1 in zip(x, y):
plt.text(x1, y1 + 1, str(y1), ha='center', va='bottom', fontsize=10, rotation=0)
plt.show()
五、数据的增删改查
1.选取特定行
可以指定自己想要的作者的所有诗词或者所有朝代的所有诗词等,或者当我们只记得诗名忘记其内容时可以对诗名进行查找,从而查看诗的内容。
# 提取李白的所有诗,这里用head只显示前十首
data_libai = data[data.作者.isin(['李白'])]
print(data_libai.head(10))
# 找到《静夜思》查看其内容
data1 = data[data.题目.isin(['静夜思'])]
print(data1)
data2 = data1[data1.作者.isin(['李白'])]
print(data2)
data3 = data[data.内容.isin(['床前明月光,疑是地上霜。举头望山月,低头思故乡。'])]
print(data3)
2.删除特定行、列
#删除指定列
data1.drop(['朝代'],axis=1,inplace=True)# axis为0代表行,为1代表列。inplace=True意思就是应用修改到文件中
print(data1)
# 删除行(某行或者某个范围)
data1.drop(data.index[467971],inplace=True)
print(data1)
#删除有“元”朝的所有行
data =data[~data.朝代.isin(['元'])]
print(data.head(10))
3.修改列表索引
data.columns = ['题目','朝代','作者','诗词内容']
print(data.head())
4.增加行列
# 增加列
data3.insert(4,'是否背诵','')
print(data3)
# 增加行
data3.loc[2] = ['九月十日即事','唐','李白','昨日登高罢,今朝更举觞。菊花何太苦,遭此两重阳。','是']
print(data3)
二、案例练习
根据上述案例学习内容,完成以下练习:
对唐代诗词进行分析处理
练习内容如下:
数据集路径如下:/data/shixunfiles/54efe04023cbc923b7feabbac5583f90_1607394157288.csv
1.导入数据集并查看数据集前10行数据
import numpy as np
import pandas as pd
data=pd.read_csv(r'/data/shixunfiles/54efe04023cbc923b7feabbac5583f90_1607394157288.csv')
data.head(10)
2.显示超过200首诗歌的唐代诗人并对诗人的诗词数量进行饼图可视化
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']# 先筛选出唐代的诗词数据
tang_data = data[data.朝代 == '唐']# 统计每位唐代诗人的诗词数量
author_count = tang_data.作者.value_counts()# 筛选出诗词数量超过200首的唐代诗人及其数量
authors_over_200 = author_count[author_count > 200]# 准备绘制饼图的数据
labels = list(authors_over_200.index)
values = list(authors_over_200.values)
plt.figure(figsize=(10, 10))
explode = [0.01] * len(labels)
plt.pie(values, explode=explode, labels=labels, autopct='%1.1f%%')
plt.title('超过200首诗歌的唐代诗人诗词数量分布')
plt.show()
3.在该数据集中查询杜甫的《望岳》这首诗并显示
data_dufu_wangyue = data[(data.作者 == '杜甫') & (data.题目 == '望岳')]
print(data_dufu_wangyue)
4.删除数据集中“序号”这一列
data.drop(['序号'], axis=1, inplace=True)
print(data.head())
标签:分析,plt,数据,大型,0.01,朝代,print,data,古诗词
From: https://blog.csdn.net/qq_48858717/article/details/143565350