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()

浙公网安备 33010602011771号