赞
踩
NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
Pandas 是 Pythonopen in new window 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas 离这个目标已经越来越近了。
Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。 Matplotlib可用于Python脚本,Python和IPythonopen in new window Shell、Jupyteropen in new window笔记本,Web应用程序服务器和四个图形用户界面工具包。
目录
查看数组有多少个数据,用index进行查询、将数组转化为1维数组
- #将列表转化为数组,里面的range函数可以看做为一个for循环创建的列表
- t1 = np.array(range(12),dtype="float32")#dtype参数更改数组中数据的类型
- t8 = np.array([range(10),range(10,20)])
- #和上面的语句相同,但语句更简洁
- t2 = np.arange(10)
- #调整数据类型
- t3 = t2.astype("bool")
- #保留小数
- t5 = np.round(t4,2)
- print(type(t4))
- print(t4.dtype)
- print(t1.shape)
- #再数组创建后进行重组
- t6 = t1.reshape((3,4))
- #在数组创建时进行重组
- t7 = np.array(range(27)).reshape(3,3,3)
- print(t7.shape[0]*t7.shape[1]*t7.shape[2])
- t7 = t7.reshape((t7.shape[0]*t7.shape[1]*t7.shape[2],))
- t7 = t7.flatten()
- t7 = np.array(range(27)).reshape(3,3,3)
- t9 = np.array(range(27,54)).reshape(3,3,3)
- t10 = np.array(range(3))
- t11 = np.array(range(3)).reshape(3,1)
- #数组运算,必须相同维度或者符合从后往前一个维度相同(其余维度为1)
- print(t9 - t7)
- print(t9 - t7)
- print(t9 * t7)
- print(t9 / t7)
- print(t9 - t10)
- print(t9 - t11)
- t12 = np.loadtxt(path,delimiter=',',dtype='int',unpack=False,skiprows=1,usecols=(0,1,2))
- #path文件路径、delimiter分隔符、dtype导入数据的类型、unpack是否转置、skiprows跳过前几行、usecols读取指定列
- t13 = np.array(range(12)).reshape(3,4)
- t13 = t13.T
- t13 = t13.swapaxes(1,0)
- t13 = t13.transpose()
- #取指定行
- a = t12[0]
- a = t12[1,:]
- #取连续几行
- a = t12[2:5]
- a = t12[2:5,:]
- #取不连续几行
- a = t12[[1,2,5]]
- a = t12[[1,2,5],:]
- #取指定列
- a = t12[:,1]
- #取连续几列
- a = t12[:,1:3]
- #取不连续几列
- a = t12[:,[0,2]]
- #取指定行列的值
- a = t12[1,2]
- #取多行多列的值
- # a = t12[1:5,1:3]
- #取多个不相邻的值
- a = t12[[1,2,5,8],[1,0,2,0]]
- t13[0,3] = 0
- t13[1:,:] = 0
- t13[t13<6] = 0
- t13 = np.where(t13<6,0,1)
- t13 = t13.clip(4,7)
- t13 = t13.astype("float")
- t13[1,3] = np.nan
- # 数组拼接
- t14 = np.array(range(6))
- t15 = np.array(range(10,16))
- #竖直拼接
- a = np.vstack((t14,t15))
- #水平拼接
- a = np.hstack((t14,t15))
- #数组交换两行
- a[[0,1],:] = a[[1,0],:]
- #数组交换两列
- a[:,[1,4]] = a[:,[4,1]]
- #获取数组中的最大值的位置
- b = np.argmax(a,axis=1)#axis参数表示行或列(0列,1行)
- #获取数组中的最小值的位置
- b = np.argmin(a,axis=1)#axis参数表示行或列(0列,1行)
- #创建一个全为0的数组
- a = np.zeros(10,2)
- #创建一个全为1的数组
- a = np.ones(10,5)
- #创建一个标准数组
- a = np.eye(10)
- print(a)
- #创建一个均匀分布随机的数组
- a = np.random.rand(3,4)
- #创建一个标准正态分布的数组
- a = np.random.randn(3,4)
- #从给定的上下限中取随机数产生一个数组
- a = np.random.randint(0,10,(3,3))
- #从给定的上下限中取值生产一个均匀分布的数组
- a = np.random.uniform(0,10,(3,4))
- #生产一个正态分布的数组
- a = np.random.normal(1,2,(3,4))
- print(a)
- #随机种子
- a = np.random.seed(1)
- #生产一个正态分布的数组
- a = np.random.normal(1,2,(3,4))
- print(a)
- #随机种子表示,从第一个随机数被取定之后,随机数不会发生改变
- # 统计数组中nan的个数
- t16 = np.arange(15).reshape(3,5)
- t16 = t16.astype("float")
- t16[:,0] = np.nan
- a = np.count_nonzero(t16!=t16)
- a = np.count_nonzero(np.isnan(t16))
- # 数组求和(行0,列1)
- a = t16.sum(axis=0)
- # 数组求均值
- a = t16.mean(axis = 0)
- # 数组求中值
- a = np.median(t16,axis = 0)
- # 数组求最大值
- a = t16.max(axis=0)
- # 数组求最小值
- a = t16.min(axis = 0)
- # 数组求极值
- a = np.ptp(t16,axis = 0)
- # 数组求标准差
- a = t16.std(axis = 0)
- t17 = np.arange(15).reshape(3,5).astype("float")
- t17[1,:] = np.nan
- t17[1,1] = 0
-
-
- def mean_exchange(t):
- for i in range(t.shape[1]):
- a = np.count_nonzero(t[:,i] != t[:,i])
- if a != 0:
- mean_val = t[:,i][t[:,i]==t[:,i]].mean()
- # t[:,i][np.isnan(t[:,i])] = mean_val
- t[:,i][t[:,i]!=t[:,i]] = mean_val
- return t
-
- if __name__ == '__main__':
- print(mean_exchange(t17))
- t1 = pd.Series(range(10),index=list("abcdefghij")) #index索引
- set1 = {"age":18,"name":'xsw',"gender":"n"}
- t2 = pd.Series(set1)
- t1 = pd.Series(range(10),index=list("abcdefghij")) #index索引
- #查看类型
- print(type(t1))
- #通过索引找值
- print(t1[:2])
- print(t1["a"])
- print(t1[["a","d"]])
- print(t1[t1>7])
- #查看索引,索引可通过for遍历
- print(t1.index)
- #查看值,值可通过for遍历
- print(t1.values)
data1 = pd.read_csv("C:/pythonProject/test.csv")
- t3 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("XSWD"))
- set2 = {"age":[18,50,30],"name":['xsw','sda','lfk'],"gender":["n","n","g"]}
- t4 = pd.DataFrame(set2)
- li1 = [{"age":18,"name":'xsw',"gender":"n"},{"age":50,"name":'sda',"gender":"n"},{"age":30,"name":'lfk',"gender":"g"}]
- t5 = pd.DataFrame(li1)
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- print(df1.shape) #查看行列数
- print(df1.dtypes) #查看列数据类型
- print(df1.ndim) #查看数据维度
- print(df1.columns) #查看列索引
- print(df1.values) #查看对象值
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- print(df1.head(3)) #指定查询前几行
- print(df1.tail(3)) #指定查询后几行
- print(df1.describe()) #快速综合统计结果
- print(df1.info()) #相关信息概览
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- data4 = df1.sort_values(by="出现时间点",ascending=False) #ascending为True升序、False降序
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- print(df1[:20]) #通过索引取前几行数据
- print(df1["出现时间点"]) #通过标签取列数据
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- #pandas之loc,通过标签索引行数据
- print(df1.loc[0,"出现时间点"])
- print(df1.loc[0])
- print(df1.loc[:,"出现时间点"])
- print(df1.loc[0:10,"出现时间点":"用户ID"])
- print(df1.loc[[0,3],["出现时间点","模式","字体"]])
-
- #pandas之iloc,通过位置获取行数据
- print(df1.iloc[0,1])
- print(df1.iloc[0])
- print(df1.iloc[:,1])
- print(df1.iloc[0:10,0:2])
- print(df1.iloc[[0,3],[0,2,4]])
- df1 = pd.read_csv("C:/pythonProject/你的名字.csv")
- #单条件选值
- df2 = df1[df1["出现时间点"] > 4000]
- # #多条件选值
- df3 = df1[(df1["出现时间点"] > 4000) & (df1["模式"] == 5)]
- #切割
- df4 = df1["出现时间点"].str().split(".").tolist()
- #判断数据是否为Nan
- t16 = np.arange(15).reshape(3,5)
- t16 = t16.astype("float")
- t16[:,0] = np.nan
- df5 = pd.DataFrame(t16)
- #判断数据是否为Nan,如果是就返回True,否则返回False
- d1 = pd.isnull(df5)
- # #判断数据是否为Nan,如果是就返回False,否则返回True
- d2 = pd.notnull(df5)
- #删除Nan所在行
- df6 = df5.dropna(axis=0,how="all",inplace=False)
- #axis表示对行或者列进行操作,how为all表示全部数值为nan时进行删除,为any只要有一个为nan就进行删除,inplace是否进行替代
- #填充数据
- df7 = df6.fillna(df6.mean(axis=1))
- #如果数据为0表示缺失值
- df6[df6==0] = np.nan
- #按行或者列累加
- df6 = df6.cumsum(axis=0)
- #数据可视化可显示中文
- plt.rcParams['font.family'] = 'SimHei'
- #记录x、y轴数据
- x = [i for i in range(1,25)]
- y = [24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16]
- #修改画布大小
- plt.figure(figsize=(20,8),dpi=80)#figsize画布大小,dpi清晰度
- plt.plot(x,y,label = "第一天",color='r',linestyle = '--',linewidth = 5,alpha = 0.5)
- #label参数添加标识,color参数添加颜色,linestyle参数调节线条风格,linewidth参数调整线条宽度,alpha调整线条透明度
- plt.plot(x,y_1,label = "第二天",color='b')
注:饼图pie、直方图hist、水平条形图barh、竖直条形图bar、散点图scatter等等,需要其它图可以去官网查找相应函数。
- #显示x轴刻度
- x_label = ["{}小时".format(i) for i in x]
- plt.xticks(x,x_label,rotation = 90)#将x_label显示在x对应的位置上,rotation坐标显示旋转
- #显示y轴刻度
- plt.yticks([i for i in range(1,max(y)+1)])
plt.grid(alpha = 1)#alpha参数为网格线透明度设置
- plt.xlabel('时间')
- plt.ylabel('温度')
- plt.title('一天的温度变化情况')
plt.legend(loc = "upper left")#loc参数调整图列的位置
plt.savefig('./graph1')
plt.show()
- from matplotlib import pyplot as plt
-
- #数据可视化可显示中文
- plt.rcParams['font.family'] = 'SimHei'
-
- #记录x、y轴数据
- x = [i for i in range(1,25)]
- y = [24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16]
- y_1 = [i for i in range(1,25)]
-
- #修改画布大小
- plt.figure(figsize=(20,8),dpi=80)#figsize画布大小,dpi清晰度
-
- #折线图
- plt.plot(x,y,label = "第一天",color='r',linestyle = '--',linewidth = 5,alpha = 0.5)
- #label参数添加标识,color参数添加颜色,linestyle参数调节线条风格,linewidth参数调整线条宽度,alpha调整线条透明度
- plt.plot(x,y_1,label = "第二天",color='b')
- #对图形进行相关处理
- #显示x轴刻度
- x_label = ["{}小时".format(i) for i in x]
- plt.xticks(x,x_label,rotation = 90)#将x_label显示在x对应的位置上,rotation坐标显示旋转
- #显示y轴刻度
- plt.yticks([i for i in range(1,max(y)+1)])
-
- #网格线设置
- plt.grid(alpha = 1)#alpha参数为网格线透明度设置
-
- #设置图形详细信息
- plt.xlabel('时间')
- plt.ylabel('温度')
- plt.title('一天的温度变化情况')
- #添加图例
- plt.legend(loc = "upper left")#loc参数调整图列的位置
-
- #保存图表
- plt.savefig('./graph1')
-
- #显示图表
- plt.show()
- import matplotlib.pyplot as plt
- plt.rcParams['font.family'] = 'SimHei'
- plt.rcParams['axes.unicode_minus'] = False
- title = ['food','education','clothes','car','others']
- timelong = [2000,5000,1000,2000,1000]
- e = (0.1,0,0.1,0.2,0.2)
- color = ['b','r','g','y','orchid']
- plt.pie(timelong,explode=e,labels=title,colors=color,startangle=30,autopct='%1.3f%%')
- plt.title('时间安排')
- plt.legend(loc = "upper left")
- plt.show()
- from matplotlib import pyplot as plt
-
- #数据可视化可显示中文
- plt.rcParams['font.family'] = 'SimHei'
-
-
- #记录x、y轴数据
- x = [i for i in range(1,25)]
- y = [24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16]
- y_1 = [i for i in range(1,25)]
-
- #修改画布大小
- plt.figure(figsize=(20,8),dpi=80)#figsize画布大小,dpi清晰度
-
- #折线图
- plt.scatter(x,y,label = "第一天",color='r',linewidth = 5,alpha = 0.5)
- #label参数添加标识,color参数添加颜色,linestyle参数调节线条风格,linewidth参数调整线条宽度,alpha调整线条透明度
- plt.scatter(x,y_1,label = "第二天",color='b')
- #对图形进行相关处理
- #显示x轴刻度
- x_label = ["{}小时".format(i) for i in x]
- plt.xticks(x,x_label,rotation = 90)#将x_label显示在x对应的位置上,rotation坐标显示旋转
- #显示y轴刻度
- plt.yticks([i for i in range(1,max(y)+1)])
-
- #设置图形详细信息
- plt.xlabel('时间')
- plt.ylabel('温度')
- plt.title('一天的温度变化情况')
- #添加图例
- plt.legend(loc = "upper left")#loc参数调整图列的位置
-
-
- #保存图表
- plt.savefig('./graph1')
-
- #显示图表
- plt.show()
- from matplotlib import pyplot as plt
-
- #数据可视化可显示中文
- plt.rcParams['font.family'] = 'SimHei'
-
- #记录x、y轴数据
- x = [i for i in range(1,25)]
- y = [24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16,24,25,33,35,32,21,10,16]
- y_1 = [i for i in range(1,25)]
-
- #修改画布大小
- plt.figure(figsize=(20,8),dpi=80)#figsize画布大小,dpi清晰度
-
- #纵向条形图
- plt.barh(x,y,label = "第一天",color='r',width=0.2,alpha = 0.5)
- #label参数添加标识,color参数添加颜色,alpha调整线条透明度,width参数为条形图宽度
- plt.barh(x,y_1,label = "第二天",color='b',width=0.2,alpha = 0.5)
-
- #横向条形图
- plt.barh(x,y,label = "第一天",color='r',height=0.2,alpha = 0.5)
- #label参数添加标识,color参数添加颜色,alpha调整线条透明度,width参数为条形图宽度
- plt.barh(x,y_1,label = "第二天",color='b',height=0.2,alpha = 0.5)
-
- #对图形进行相关处理
- #显示x轴刻度
- x_label = ["{}小时".format(i) for i in x]
- plt.xticks(x,x_label,rotation = 90)#将x_label显示在x对应的位置上,rotation坐标显示旋转
- #显示y轴刻度
- plt.yticks([i for i in range(1,max(y)+1)])
-
- #网格线设置
- plt.grid(alpha = 1)#alpha参数为网格线透明度设置
-
- #设置图形详细信息
- plt.xlabel('时间')
- plt.ylabel('温度')
- plt.title('一天的温度变化情况')
- #添加图例
- plt.legend(loc = "upper left")#loc参数调整图列的位置
-
- #保存图表
- plt.savefig('./graph1')
-
- #显示图表
- plt.show()
-
- import numpy as np
- from matplotlib import pyplot as plt
-
- #数据可视化可显示中文
- plt.rcParams['font.family'] = 'SimHei'
-
- #记录x数据
- x = np.random.randint(2,100,200)
-
- #组距
- distance = 10
-
- #修改画布大小
- plt.figure(figsize=(20,8),dpi=80)#figsize画布大小,dpi清晰度
-
- #绘制频数直方图
- plt.hist(x,(max(x)-min(x))//distance)
- #label参数添加标识,color参数添加颜色,alpha调整线条透明度,width参数为条形图宽度
-
- #绘制频率直方图
- plt.hist(x,(max(x)-min(x))//distance,density=True)
-
- # #对图形进行相关处理
- # #显示x轴刻度
- plt.xticks(range(min(x),max(x)+distance,distance))#将x_label显示在x对应的位置上,rotation坐标显示旋转
-
- #网格线设置
- plt.grid(alpha = 1)#alpha参数为网格线透明度设置
-
- #设置图形详细信息
- plt.xlabel('时间')
- plt.ylabel('温度')
- plt.title('一天的温度变化情况')
- #添加图例
- plt.legend(loc = "upper left")#loc参数调整图列的位置
-
- #保存图表
- plt.savefig('./graph1')
-
- #显示图表
- plt.show()
接下来还会更新关于数据分析的文章,期待下一篇关于数据分析的文章吧!
在这里谢谢小伙伴们的支持啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。