Python 练习-NumPy&Pandas
1、问答题 (5分) 导入numpy库并取别名为np
import numpy as np #导入numpy库并取别名为np
array=np.array([[1,2,3],
[4,5,6],
[7,8,9]])#新建一个数组
print(array)#输出数组
[[1 2 3]
[4 5 6]
[7 8 9]]
2、问答题 (5分) 创建数组的常用方法举例,特殊数组和普通数组的创建方法各举两例
c=np.array([1,2,3])#创建一维数组
print(c)
[1 2 3]
d=np.array([[1,2,3],
[4,5,6]])#创建二维数组(矩阵)**[[[1,2,3]]]三维数组
print(d)
[[1 2 3]
[4 5 6]]
h=np.arange(8).reshape((2,4))#reshape方法可以指定生成数组的维度,(行,列)
print(h)
[[0 1 2 3]
[4 5 6 7]]
empty=np.empty((3,2))#创建指定行列数量的数值全接近于0数组(但不等于0)
print(empty)
[[2.33e-321 2.33e-321]
[5.89e-321 5.89e-321]
[6.03e-321 6.03e-321]]
3、问答题 (5分) 查看数组属性的几种常用方法,如查看维度、形状、长度与数据类型
import numpy as np
a1 = np.array([1,2,3,4],dtype=np.complex128)
print(a1)
print("数据类型",type(a1)) #打印数组数据类型
print("数组元素数据类型:",a1.dtype) #打印数组元素数据类型
print("数组元素总数:",a1.size) #打印数组尺寸,即数组元素总数
print("数组形状:",a1.shape) #打印数组形状
print("数组的维度数目",a1.ndim) #打印数组的维度数目
[1.+0.j 2.+0.j 3.+0.j 4.+0.j]
数据类型 <class 'numpy.ndarray'>
数组元素数据类型: complex128
数组元素总数: 4
数组形状: (4,)
数组的维度数目 1
4、问答题 (5分) 创建长度为10的零向量 注:向量指具有大小和方向的量
Z = np.zeros(10)
print (Z)
5、问答题 (5分) 创建一个值域为10到49的向量
Z = np.arange(10, 50)
print (Z)
6、问答题 (5分) 创建一个向量后将其反转(第一个元素变为最后一个)
Z = np.arange(50)
Z = Z[::-1]
print (Z)
7、问答题 (5分) 创建一个3x3的单位矩阵 注:矩阵是一个按照长方阵列排列的复数或实数集合
Z = np.arange(9).reshape(3, 3)
print (Z)
8、问答题 (5分) 创建一个长度为30的随机向量,并求它的平均值
Z = np.random.random(30)
mean = Z.mean()
print (mean)
9、问答题 (5分) 试实现对5x5随机矩阵的归一化
Z = np.random.random((5, 5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z-Zmin)/(Zmax-Zmin)
print (Z)
10、问答题 (5分) 从命令行得到numpy中add函数的说明文档
np.info(np.add)
11、问答题 (5分) 导入 Pandas 库并简写为 pd
import pandas as pd
pd.__version__
12、问答题 (5分) 从列表创建Series
import numpy as np
import pandas as pd
temp = np.arange(0, 6)
data = pd.Series(temp)
print(data)
13、问答题 (5分) 从字典创建Series
import numpy as np
import pandas as pd
temp = {'a': 1,
'b': 3}
data = pd.Series(temp)
print(data)
14、问答题 (5分) 从numpy数组创建DataFrame
import numpy as np
import pandas as pd
temp = np.arange(0,6)
data = pd.DataFrame(temp, index=['a', 'b', 'c', 'd', 'e', 'f'],
columns=['temp'])
print(data)
15、问答题 (5分) 如何发现、剔除和填充缺失值?
发现:
df.info()
df['col_name'].isnull() #但数据量多时用这条看不清楚...
剔除:
df.dropna(thresh=len(df)*0.8, axis=1)
#thresh参数含义,某行或某列起码有thresh个非NA数。
#以上表示如某列缺失值超过20%,则删除
df.dropna(how='all')
#删除空行,默认为df.dropna(how='any'), 只要行中有NA,就会删除整行。
填充:
df.fillna({'colA':'fill_value1', 'colB':'fill_value2'})
#对不同的列填充不同的值
df.fillna(method='ffill', inplace=True)
#用前一行填充
df.fillna({'colA':df['colA'].mode(), 'colB':test['colB'].mean()})
#用众数,平均数分别填充
章节五练习-Python可视化
1.问答题 (33分) 【人事管理数据工资水平可视化】题目要求:1、导入数据和工具包,绘制不同性别、不同部门、不同学历、不同职称的平均薪资水平数据
import pandas as pd
df = pd.read_excel('pandas120.xlsx')
print(df.groupby('学历').mean())
print(df.groupby('性别').mean())
print(df.groupby('职称').mean())
print(df.groupby('部门').mean())
2、绘制工资水平频率分布直方图
3、绘制工资水平密度曲线
附件:人事管理数据.xlsx
2.问答题 (33分) 【餐厅小费情况可视化分析(利用Seaborn包实现)】题目要求:
1、导入seaborn工具包并加载其自带的"tip"数据集,查看前几行的数据情况
import seaborn as sb
df = sb.load_dataset('tips')
print df.head()
2、小费与总消费关系可视化分析——绘制小费与总消费数据的散点图,并附有回归线
3、小费与性别、抽烟与否关系可视化分析——绘制不同性别、抽烟与否人群所付小费情况的箱线图
4、小费与就餐时间、就餐人数关系可视化分析——绘制不同就餐时间、不同就餐人数所付小 费情况的小提琴图提示:
1、使用load_dataset( )方法加载数据集数据字段说明:total_bill—总消费tip—消费sex—性别smoker—吸烟与否day—就餐星期time—就餐时间size—就餐人数
2、lmplot( )方法
3、boxplot( )方法
4、小提琴图既保留了箱线图的优势,又可以显示出每个y轴数据的概率。提示:violinplot方法5、x轴为性别,y轴为小费,抽烟与否为分组变量;使用barplot( )方法,分组用参数hue实现。
3.问答题 (34分) 【航班乘客变化可视化分析】题目要求:
1、导入:matplotlib包中的pyplot工具、seaborn工具包、numpy库、pandas库加载数据:seaborn工具包中自带的"fl ights"数据集查看前几行数据数据字段说明:year—年份month—月份passengers—乘客数量
2、航班乘客数量年度变化可视化分析——绘制不同年份乘客数量变化的折线图,要求为坐标轴加标签说明以及为图表加上标题。提示:要先整理数据,对不同年份的乘客数量进行分类汇总。
3、航班乘客数量月度差异可视化分析——绘制任一年份各月份的乘客数量分布直方图,同样要加标签和标题。另外,为横坐标添加数据标签,格式为原月份数据的前三个字母,如1月为Jan,2月为Feb,...