想要在Jupyter Notebook打开指定的路径文件:
- 在cmd中输入jupyter notebook,直接在当前的路径打开了
1.Numpy矩阵与通用函数使用方法
import numpy as np#导入
x=np.array([1,2,3])#创建变量
y=np.array([4,5,6])
print('数组相加结果为:',x +y)#数组相加
print ('数组相减结果为:',x - y)#数组相减
print('数组相乘结果为:',x* y)#数组相乘
print('数组相除结果为:',x/y)#数组相除
print ('数组幂运算结果为: ',x**y)#数组幂运算
数组相加结果为: [5 7 9]
数组相减结果为: [-3 -3 -3]
数组相乘结果为: [ 4 10 18]
数组相除结果为: [0.25 0.4 0.5 ]
数组幂运算结果为: [ 1 32 729]
可以看出来用来数组计算还是很方便的
x=np.array([1,3,5])
y=np.array([2,3,4])
print('数组比较结果为:',x <y)
print ('数组比较结果为:',x > y)
print('数组比较结果为:',x== y)
print('数组比较结果为:',x>=y)
print ('数组比较结果为: ',x<=y)
print ('数组比较结果为: ',x!=y)
数组比较结果为: [ True False False]
数组比较结果为: [False False True]
数组比较结果为: [False True False]
数组比较结果为: [False True True]
数组比较结果为: [ True True False]
数组比较结果为: [ True False True]
print('数组逻辑运算结果为:',np.all(x==y))#np.all表示逻辑与
print('数组逻辑运算结果为:',np.any(x==y))#np.any表示逻辑或
数组逻辑运算结果为: False
数组逻辑运算结果为: True
2. 利用Numpy进行统计分析
import numpy as np
arr=np.arange(100).reshape(10,10)#创建一个数组
np.save('D:\pythonFX\jupyter/save_arr',arr)#保存数组到文件下面,名称是save_arr
print('保存数组为:\n',arr)
保存数组为:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
保存多个数组的方法
arr1=np.array([[1,2,3],[4,5,6]])#创建一个数组
arr2=np.arange(0,1.0,0.1)
np.savez('D:\pythonFX\jupyter/save_arr',arr1,arr2)#保存两个数组到一个文件
print('保存数组1为:\n',arr1)
print('保存数组2为:\n',arr2)
保存数组1为:
[[1 2 3]
[4 5 6]]
保存数组2为:
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
读
- 读取含有单个数组的文件
loaded_data=np.load(‘文件路径.npy’) - 读取含有多个数组的文件
print(‘读取的数组1为:\n’,loaded_data1[‘arr_0’])
print(‘读取的数组2为:\n’,loaded_data1[‘arr_1’]) - txt文件也是可以读取的
loaded_d=np.genfromtxt(‘D:\pythonFX\jupyter/arr.txt’,delimiter=‘,’) - 设置随机种子,生成随机数组,一共10个
np.random.seed(42)
arr=np.random.randint(1,10, size=10)
arr.sort(axis=1)#沿着横轴排序,每一行由小到大 - 去重
names =np.array([‘小明’,‘小黄’,‘小花’,‘小明’,‘小花’,‘小兰’,‘小白’])
print(‘创建的数组为:\n’,names)
print(‘去重后的数组为:\n’,np.unique(names)) - 各种计算
arr = np.arange (20).reshape(4,5)
print(‘创建的数组为:\n’, arr)
print('数组的和为: ', np. sum(arr))#计算数组的和
print('数组横轴的和为: ',arr.sum(axis=0))#沿若横轴讣算求彩
print('数组纵轴的和为: ',arr.sum(axis=1))#沿着纵铀计算求和
print('数组的均值为: ',np.mean(arr))#计算数组均值
print(‘数组横轴的均值为:’, arr.mean(axis=0))# 浴蓍横铀计算数组均值
print('数组纵轴的均值为: ',arr.mean(axis=1))# 浴着纵铀计算数组均值
print('数组的标准差为: ', np.std(arr))#计算数组标准差
print('数组的方差为: ',np.var(arr))#计算数组方差
print('数组的最小值为: ', np.min(arr))#计算数组最小值
print(‘数组的最大值为:’,np.max(arr))#计算数组最大值
print('数组的最小元素为: ', np.argmin(arr))#返回数组最小元紊的索引
print('数组的最大元素为: ', np.argmax(arr))#返回数组最大元紊的索引
3.读取数据库
(1)SQLAIchemy 连接 MySQL数据库
from sqlalchemy import create_engine#导入后才可以连接
#创建一个MySQL连接,用户名为root,密码为123456
#ip地址为127.0.0.1,数据库名称为test豆瓣,编码格式为utf-8
engine=create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/123456?charset=utf8')
print(engine)
(2)读
- 使用read_sql_query、read_sql_table、read_sql函数读取数据库中的数据
#使用read_sql_query函数查看testdb中的数据表清单
musicadatalist = pd.read_sql_query(‘show tables’, con=engine)
print(‘testdb数据库数据表清单为:\n’,musicadatalist) - 使用read_sql_table函数读取音乐行业收入信息表
musicdata=pd.read_sql_table(‘musicdata’,con=engine)
print(‘使用read_sql_table函数读取音乐行业收入信息表,表的长度为:\n’,len(musicdata)) - 使用read_sql函数读取音乐行业收人信息表
musicdata= pd.read_sql(‘musicdata’,con=engine)
print(‘使用read_sql函数读取音乐行业收入信息表,表的长度为:\n’,len(musicdata))
(3)写
- 使用to_sql()方法写入数据
musicdata.to_sql(‘test1’,con=engine,index=False,if_exists=‘replace’)
#使用read_sql_query 函数读取 testdb数据库
formlistl = pd.read_sql_query(‘show tables’,con=engine)
print(‘新增一个表格后,testdb 数据库数据表清单为:\n’,formlistl) - 查看音乐行业收入信息表的4个基本属性
from sqlalchemy import create_engine
import pandas as pd
#创建数据库连接
engine= create_engine(‘mysql+pymysql://root:123456@127.0.0.1:3306/123456?charset=utf8’)
musicdata = pd.read_sql_table(‘musicdata’,con=engine)
print(‘音乐行业收人信息表的索引为:’,musicdata.index)
print(‘音乐行业收人信息表的所有值为:\n’,musicdata.values)
print(‘音乐行业收人信息表的列名为:\n’,musicdata.columns)
print(‘音乐行业收人信息表的数据类型为:\n’,musicdata.dtypes) - size、ndim和shape 属性的使用
#查看DataFrame 的元素个数、维度、形状
print(‘音乐行业收人信息表的元素个数为:’,musicdata.size)
print(‘音乐行业收人信息表的维度为:’,musicdata.ndim)
print(‘音乐行业收人信息表的形状为:’,musicdata.shape)#musicdata.T.shape使用T属性进行转置
4.文件的读取与查看,利用pandas预处理
(1)合并年龄、平均血糖和中风患者信息数据
import pandas as pd
stroke_info = pd.read_excel('./healthcare-dataset-stroke.xlsx ' , encoding= 'utf-8' )
age_abs = pd.read_excel('./healthcare-dataset-age_abs.xlsx', encoding=' utf-8')
link_outer = pd.merge(stroke_info,age_abs,how='outer',left_on='编号',right_on='编号')
print(stroke_info.shape)
print(age_abs.shape)
print(link_outer.head())
print('======================')
print('合并后表格属性为:\n',link_outer.shape)
(1767, 9)
(1767, 3)
编号 性别 高血压 是否结婚 工作类型 居住类型 体重指数 吸烟史 中风 年龄 平均血糖
0 9046 男 否 是 私人 城市 36.6 以前吸烟 是 67.0 228.69
1 51676 女 否 是 私营企业 农村 NaN 从不吸烟 是 61.0 202.21
2 31112 男 否 是 私人 农村 32.5 从不吸烟 是 80.0 105.92
3 60182 女 否 是 私人 城市 34.4 抽烟 是 49.0 171.23
4 1665 女 是 是 私营企业 农村 24.0 从不吸烟 是 79.0 174.12
======================
合并后表格属性为:
(1767, 11)
删除年龄异常的数据
import numpy as np
w=link_outer['年龄']
m=[]
for i in w:
if i > 0.0:
m.append(i)
print(m)
m1=[x for x in m if x==int(x)]
print("删除年龄异常的数据:\n",m1)
(2)来聘人员信息
#读取信息
import pandas as pd
job = pd.read_csv('D:\pythonFX\jupyter\pandas\使用pandas进行预处理\来聘人员信息\hr_job.csv',index_col=0,encoding='gbk',engine='python')
# print (xinxi)
#1.查看缺失值的数量
print('job每个特征缺失的数目为:\n',job.isnull().sum())
#填补缺失值
job['性别']=job['性别'].fillna('未知')
job['教育水平']=job['教育水平'].fillna('未知')
#取平均后再添加未知
mean_num=int(job['工作次数'