python数据分析应用(代码版)

想要在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['工作次数'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值