numpy,pandas,matplotlib的基础知识学习

一、matplotlib的学习

1.绘制折线图

from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,12,15,16,3,24,6,24,12,45,32]
# 设置图片的大小
plt.figure(figsize = (20,8),dpi=80)
# 设置坐标

plt.xticks(range(1,26),["10点{}".format(i) for i in range(25)],rotation=315,font = "SimHei")
plt.plot(x,y,label="牛逼",color = "orange",linestyle =":",linewidth = 5)
# 调整x轴的刻度plt.xticks(变量,刻度名,旋转角度rotation=,显示中文字体font)

# 设置描述信息
plt.xlabel("时间",font = "SimHei")
plt.ylabel("温度",font = "SimHei")
plt.title("matplotlib",font = "SimHei")

# 绘制网格
plt.grid(alpha = 0.4)#显示清晰度

# 添加图例,图例显示中文不是font,而是prop
plt.legend(prop = "SimHei",loc = "upper left")

# 保存图片
# plt.savefig("./t1.png")
plt.show()

2.绘制散点图(scatter)

from matplotlib import pyplot as plt
import  numpy as np
T = np.random.randint(15,23,30)
x = range(30)
T1 = np.random.randint(22,30,31)
x_ = range(50,81)
plt.figure(figsize=(20,8),dpi=80)
plt.scatter(x,T)
plt.scatter(x_,T1)
plt.show()

3.绘制条形图(bar/barh)

from matplotlib import pyplot as plt
a = ["哈哈哈","嘿嘿嘿","呵呵呵"]
b = [23,12,34]

# 横着的话就是barh
plt.bar(range(len(a)),b,width=0.3,color = "cyan")
plt.xticks(range(len(a)),a,font = "SimHei")
plt.show()

4.绘制直方图(hist)

from matplotlib import pyplot as plt
import  numpy as np
a = np.random.randint(80,120,40)
plt.hist(a,20)
plt.show()


二、numpy

1.随机数的生成

 2.nan的注意点

1.俩个nan是不相等的 ,属于float

2.可以利用np.count_nonzero(t1!=t1)找出nan     np.isnan()

3.和任何值计算都是nan


3.基础操作 

#加载数据  np.loadtxt(filename,dtype,分割号delimiter=,跳过前几行skiprows=,usecols=,是否转置unpack=)

#矩阵的转置:a.T 或者是  np.transpose()  a.swapaxes(0,1)交换0,1轴
m = np.array([[1,2],[3,4]])
n = m.ndim#后面无需括号,判断维数
print("shape:",m.shape)

#可以更改矩阵的格式
a = np.array([1,2],dtype=np.int)#float

# 取小数
a = np.round(a,2)

#在数组之中取多行    a[[1,5,7]]俩个中括号 a[:,3]

#条件语句  np.where(t<=3.100,300)

zero = np.zeros((2,1),dtype=np.int)

a = np.arange(10,18,2)#10,12,14,16
a = np.arange(12).reshape((3,4))#从0-11
a = np.linspace(1,10,5)#在1-10中分成五段

print(a<6)#返回的是Ture False  可以直接赋值新的值a[a<6] = 3
#np.sin用的是弧度制

#两种乘法:直接*      np.dot(,)

a = np.random.random((2,4))#随机生成
a = np.random.randint(1,10,12)#在1-10中随机取11个整数

#np.sum(,axis=0),np.min(,axis=1)   分别表示行列
#np.argmin()求出最小值索引值   np.mean(A) 等同于A.mean()   median    cumsum就是前n的和  diff()表示第n与n-1的差值  sort()逐行排序
# ptp极值 std标准差
a = np.clip(a,5,9)#把矩阵小于5的数字变成5,大于9的变成9

a.flatten()#表示将原来的数组变成一行,若要迭代所有的数据,for i in a.flat:

np.vstack((a,b))#默认按行合并
np.hstack((a,b))#左右合并
np.concatenate((a),axis=0)#0表示按行合并

# 行交换就是t[[0,2],:] = t[[2,0],:]


#分割
np.split(a,3,axis=0)#将a数组按行分成三组
np.array_split()#类似于上面,但可以允许不均匀分割
#同样也有vsplit, hsplit

三、pandas

1.numpy只能处理数值型的数据,字典字符串,时间序列啥的都不行

常用的数据类型:①Series一维,带标签数组(有索引)

                             ②DataFrame,Series的容器

加载数据:pd.read_csv(filename)  可以有很多类型_excel....

        eg:pd.read_sql(sql_sentence.connection)

DataFrame

        index,columns分别表示0轴,1轴

        df.head(n)  n表示前几行    tail表示后几行

        df.info()

        df.describe()可以计算出数理统计

        排序的方法:df.sort_values(by = )后面跟的是他的名,默认是升序,若要降序则在后面添加   ascending = False

        df[]里面写的是数组则是取行,字符串则是取索引

        df.loc[" "," "]填的是标签名

        df.iloc[n,m]直接数值取值

pd.isnull()判断是不是nan

删除掉nan所在行或者列:pd.dropna(axis =,how = "any")how里默认的值是any,有一个就把所在行列删除,all的话则需要全部为nan


版权声明:本文为weixin_51908696原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。