python 06.12

1.numpy模块

import numpy as np
lis = [1,2,3] #一维数组
print(np.array(lis))
print(np.array([[1,2,3,4],[5,6,7,8]])) #二维数组
print(np.array([[[1,2,3,4],[5,6,7,8]],[[1,2,3,4],[5,6,7,8]],[[1,2,3,4],[5,6,7,8]]])) #三维数组

np,array和list区别:

1.np.array是多维的,list是一维的;

2.list对一维数组进行操作,np.array对多维数组进行操作

1.获取多行数组的行和列

arr = np.array([[1,2,3,4],[5,6,7,8],[1,2,3,4]])
print(arr.shape) #获取行列[0]&[1]
print(arr[1,2]) #取值
print(arr[0,:])
print(arr[:,0])

2.高级功能,多维数组元素的替换

arr = np.array([[1,2,3,4],[5,6,7,8],[1,2,3,4]])
arr[arr>6]=0
print(arr)

3.多维数组的合并

arr1 = np.array([[1,2,3,4],[5,6,7,8]])
arr2 = np.array([[1,2,3,4],[5,6,7,8]])
np.vstack((arr1,arr2))
np.hstack([arr1,arr2])
np.concatenate((arr1,arr2),axis=0) #axis默认垂直,axis=0就是列,axis=1 就是行。

4.通过函数方法创建数组

np.arange(10)
np.arange(1,10,2)
array1 = np.ones((3,4))
print(array1)
array2 = np.zeros((3,4))
print(array2)
array3 = np.eye(5)
print(array3)

5.矩阵的运算(相加,相减,相乘,相除,相除取余,**n)

6矩阵的max(),min()

7.numpy生成随机数

np.random.seed(1)
array = np.random.rand(3,4)
print(array)

2.pandas模块

  • 支持文件存取操作,支持数据库(sql)、html、json、pickle、csv(txt、excel)、sas、stata、hdf等
import pandas

print(pd.Series([1,2,3,4])) #只能输入一维
print(pd.DataFrame([[1,2,3,4],[5,6,7,8]])) #二维即以上数组使用DataFrame

dates = pd.date_range('2019-01-01',periods=7)
goods_list = ['tesla','transform','masaladi','sanminzhi']
prices = np.random.rand(7,4)
df = pd.DataFrame(prices,index=dates,columns=goods_list)
print(df)

print(df) 
print(df.dtypes) #查看数据类型
print(df.index) #查看行序列或索引
print(df.columns) #查看各列的标签
print(df.values) #查看数据框内的数据,也即不含表头索引的数据
print(df.describe()) #查看数据每一列的极值,均值,中位数,只可用于数值
print(df.transpose()) #转置T
print(df.sort_index()) #排序,可按行或列index排序输出

df.sort_values(by=['tesla'],ascending=True)

*处理缺失值

test_data = '''
5.1,,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,,0.2
7.0,3.2,4.7,1.4
6.4,3.2,4.5,1.5
6.9,3.1,4.9,
,,,
'''
from io import StringIO
test_data = StringIO(test_data)
df = pd.read_csv(test_data)
print(df)

print(df.dropna(axis=0))
print(df.dropna(axis=1))
print(df.dropna(thresh=3))

print(df.dropna(subset=["'c2'"]))

print(df.fillna(value=0))

*合并数据

df1 = pd.DataFrame(np.zeros((3,4)))
print(df1)
df2 = pd.DataFrame(np.ones((3,4)))
print(df2)
print(pd.concat((df1,df2)))

*取值

df.loc['2019-01-01']  #按照索引取值
df.iloc[0,0] #类似于numpy取值

3.matplotlib模块

用途:图形可视化,,主要用来画图。

一张画布

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# %matplotlib inline
font = FontProperties(fname='字体路径')


plt.bar()  # 条形图
plt.plot()  # 直线图
plt.hist()  # 直方图
plt.scatter()  # 散点图
plt.text()  # 文本

plt.show()

两张画布

import matplotlib.pyplot as plt     # %matplotlib inline
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='D:\msyh.ttc')

fig = plt.figure(figsize=(12,12))

ax1 = fig.add_subplot(121)
ax1.text(0.5,0.5,'121画布',fontproperties=font)

ax2 = fig.add_subplot(122)
ax2.text(0.5,0.5,'122画布',fontproperties=font)

ax1.set_title()  # ax1的标题
ax2.set_title()  # ax2的标题
fig.suptitle()  # 总标题

plt.show()

```python
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='‪D:\Python\simhei.ttf')
classes = ['1班','2班','3班','4班']
student_amounts = [30,20,30,40]
classes_index = range(len(classes))
plt.bar(classes_index,student_amounts)
plt.xticks(classes_index,classes,FontProperties=font)
plt.text(0,32,'30')
plt.xlabel('班级',FontProperties=font)
plt.ylabel('学生人数',FontProperties=font)
plt.title('班级—学生人数',FontProperties=font)
plt.style.use('ggplot')
plt.plot()
plt.show()
posted @ 2019-06-12 21:00  海森t  阅读(51)  评论(0)    收藏  举报