一、python数据分析与挖掘技术基础
1、相关模块简介
2、相关模块安装
安装建议:1.安装到python中 ; 2.在每个项目的虚拟环境中安装
1)numpy安装:
pip install -i https://pypi.douban.com/simple numpy
2)pandas安装:
pip install -i https://pypi.douban.com/simple pandas
3)Matplotlib安装:
pip install -i https://pypi.douban.com/simple matplotlib
4)scipy安装:
pip install -i https://pypi.douban.com/simple scipy
5)statsmodels安装:
pip install -i https://pypi.douban.com/simple statsmodels
6)gensim安装:
pip install -i https://pypi.douban.com/simple gensim
7)wordcloud安装:
pip install -i https://pypi.douban.com/simple wordcloud
8)jieba安装:
pip install -i https://pypi.douban.com/simple jieba
9)pyecharts安装:
pip install -i https://pypi.douban.com/simple pyecharts
pip install-i https://pypi.douban.com/simple pyecharts_snapshot
3、相关模块的基本使用
1)numpy模块
importnumpy as np#1、np 数组的生成
a = np.array([[1,3,5],[2,4,6],[3,6,9]]) #生成3维数组
a1 = np.arange(15) #生成一维数组,数值为0-14
a = np.zeros(10) #一维数组,10个0
a = np.zeros(3,6) #二维数组,3*6 个0
a = np.ones(10) #一维数组,10个1
a.shape #打印a的形状(一维或是二维数组等)
#2、数组的维度变化
a = np.arange(24).reshape((2,3,4)) #将24个元素生成一个三维数组
a.reshape((3,8)) #不改变数组a元素,新生成一个3*8的二维数组
a.resize((3,8)) #不改变原数组a的元素,但会改变原数组a的形状,变为3*8的二维数组
a.flatten() #对数组进行降维,返回折叠后的一维数组,原数组不变
#3.数组的索引和切片#一维数组的索引与切片
a[2] #获取数组第三个元素
a2 = a1[1:4:2] #获取数组1-3的元素,切步长为2
#多维数组的索引与切片
"""[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]"""a[1][2][3] #数值为:23
a[1,2,3] #数组为:23
a[:,:,::2] #第一维度的所有,第二维度的所有,第三维度的所有但步长为2
#NumPy的ndarray 数组和标量之间的运算#数组乘法/减法,对应元素相乘/相减。
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])print (arr * arr) #不需要做循环,相当于对应元素进行平方处理
print (arr -arr)#标量操作作用在数组的每个元素上
arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]])print (1 /arr)print (arr ** 0.5) #开根号
#数组运算
np.abs(a) #绝对值
np.fabs(a) #绝对值
np.sqrt(a) #平方根
np.square(a) #平方
np.log10(a) #10底对数
np.maximum(a1,a2) #两个元素对应对比最大值,返回一个新的数组
np.minimum(a1,a2) #两个元素对应对比最小值
np.fmax(a1,a2) #元素最大值,同上
np.fmin(a1,a2) #最小值,同上
np.max(a) #单个元素,最大值
np.min(a) #最小值#>< >= <= == != :算术比较,产生的是布尔型数组
#numpy 数据的存取#1、存储到CSV文件,只适合一维跟二维数组存取
np.savetxt('a.csv',a ,fmt='%d',delimiter=',')#存储,fmt:写入文件的格式,delimiter:分隔字符串,默认为任何空格
np.loadtxt('a.csv',dtype=np.int,delimiter=',')#读取文件
#2、多维数组存取
a.tofile("b.bat",sep=",",format='%d') #存储 sep:数据分割字符串,如果为空串,写入文件的为二进制格式
np.fromfile("b.bat",dtype=np.int,sep=",") #读取
#3、np的便捷文件存取
np.save("a,npy",a) #扩展名为.npy
np.savez("a.npz",a) #扩展名为.npz
np.load("a,npy") #读取,扩展名如上
#np的统计函数
np.sum(a) #和
np.mean(a) #期望值
np.average(a) #加权平均值
np.std(a) #标准差
np.var() #方差
numpy
2)Matplotlib模块
3)pandas模块
4、python数据导入方式
导入数据方式:
importpandas as pd#1、导入csv文件
i = pd.read_csv("file_name.csv")
i.describe()#统计详细信息
i.sort_values(by = "colunm_name") #将数据根据某列排列
#2、导入.xls文件,需要安装xlrd模块
j = pd.read_excel("file_path.xls")#3、导入mysql数据库的数据 ,首先→ 记得先安装mysqlclient
importMySQLdb
conn= MySQLdb.connect(host = "127.0.0.1",user = "root",passwd = "*******",db = "data_demo",charset = "utf8") #连接数据库
sql = "select * from my_db_table" #执行的语句
pd.read_sql(sql,conn) #导入执行sql语句后的结果数据
#4、导入html数据 ,可以直接从HTML网页中加载对应table表格中的数据,如果有中文,加上encoding='utf8'#需要安装html5lib 、 beautifulsoup4 和 lxml模块
a = pd.read_html("file_path.html")
a= pd.read_html(r"C:\Users\Administrator\Desktop\abc.html",encoding='utf8') #读取本地HTML文件
a = pd.read_html("www.douban.com") #读取网站线上HTML网页的table数据
#5、导入文本数据
d = pd.read_table("file_path.text")
5、 可视化分析实现-->Matplotlib
1)折线图/散点图 -->plot
importmatplotlib.pyplot as pltimportnumpy as np#折线图/散点图:plot#a = np.arange(10).reshape(2,5)
a = np.random.random_integers(1,20,10).reshape(2,5) #随机生成10个数,介于1-20之间,再转成2*5的数组
plt.plot(a[0],a[1]) #plot(x轴数据,y轴数据,展现形式) 默认折线图#plt.plot(a[0],a[1],'o') # 散点图
plt.title('你好',fontproperties='SimHei') #标题
plt.xlabel('横轴',fontproperties='SimHei',fontsize=20)
plt.ylabel('纵轴',fontproperties='SimHei',fontsize=20)
plt.xlim(0,20) #横轴的数值范围
plt.ylim(4,20) #纵轴的数值范围
plt.show()
折线图:
散点图:
** 正态分布图:
s = np.random.normal(5.0,2.0,10) #生成正态分布图 (均值,∑,个数)
plt.plot(s)
plt.show()
2)直方图
data = np.random.normal(10.0,1.0,200)
plt.hist(data) # hist(data,10) 10表示直方图数量
plt.show()
** 子区域
①、规则性子区域 subplot
plt.subplot(3,2,4)#plt.subplot(324) # 同上
plt.grid(True) #网格
plt.show()
②、不规则性子区域 subplot2grid
plt.subplot2grid((3,3),(1,0),colspan=2) #区域数:3 x 3,当前绘图区:(1,0)即第三个子区域,大小占两个格
plt.grid(True) #网格
plt.show()
6、数据探索与数据清洗
1)概述
2)数据探索的核心
3)数据清洗