从零开始学python数据分析与挖掘 pdf,python数据分析和挖掘实战

  从零开始学python数据分析与挖掘 pdf,python数据分析和挖掘实战

  参考书

  彭飞总结了本书选取的重要知识点,并手动编写了代码。

  1数据分析和挖掘的区别从定义上解释:数据分析是用统计学的方法对获取的数据进行描述性和探索性的分析,并从分析结论中发现数据中存在值,这些值大多以图表的形式呈现。数据挖掘是利用统计学、机器学习和人工智能的方法,对获取的数据进行提炼和转化(类似赌石),从数据中发现看不见的价值和规律。从工作侧重点来说:数据分析更侧重于实际业务,分析工作是按照业务来进行的,而数据挖掘更侧重于技术,通过更高级、更置换的算法,可以提取出更有价值的东西,输出结果就出来了。数据分析更多的是统计描述的呈现。数据挖掘更多的是模型和规则的输出。2数据挖掘过程

  3 python基础知识数据结构与方法列表索引:正索引、负索引、切片索引、无限索引列表操作:

  添加的元素:append,extend,insert list=[1,10,100,1000,10000]

  #append在末尾添加一个数字

  list.append(2)

  打印(列表)

  输出:[1,10,100,1000,10000,2]

  #extend在末尾添加多个元素

  list . extend([20200200020000])

  打印(列表)

  out:[1,10,100,1000,10000,20,200,2000,20000]

  #insert在指定位置插入新值

  list.insert(2,11)

  打印(列表)

  Out:[1,10,11,100,1000,10000]元素删除:弹出,移除,清除

  list=[1,10,11,100,1000,10000]

  #pop默认删除最后一个元素,也可以在指定位置删除。

  list.pop()

  打印(列表)

  出局:[1,10,11,100,1000]

  list.pop(2)

  打印(列表)

  out:[1,10,100,1000,10000]

  #remove删除指定的值,但只删除列表中第一个出现的指定值。

  列表.删除(11)

  打印(列表)

  out:[1,10,100,1000,10000]

  #清除清空列表

  list.clear()

  打印(列表)

  Out:[]列表计数,查询位置,反转,排序列表=[7,3,9,11,4,6,10,3,7,4,4,3,3,6,3]

  #计算列表元素的数量3

  print(list.count(3))

  #找出6号元素在哪里。

  print(list.index(6))

  #元素反转

  print(list.reverse())

  #按降序列出元素

  Print(list.sort(reverse=True))元组元组类似于列表操作,但最大的区别在于元组是一种不可改变的数据结构类型。简单来说,元组不能删除、修改和插入元素,但可以删除整个元组。

  字典操作

  增加了字典元素:setdefault,update和key index dict={ name :张三,年龄:33,性别:男,子女:{ 儿子:张四,女儿:张梅 },兴趣:{

  #添加元素

  Dict.setdefault(户籍,合肥)

  dict . update(( Education : Master ))

  Dict[ height ]=删除了178个字典元素:pop,popitem,clear

  #删除指定的值

  Dict.pop(户籍)

  孩子。波普(“女儿”)

  #删除字典中的任何元素

  dict.popitem()

  #空元素

  Dict.clear()字典其他方法:get()、keys()、values()、items()

  #get从字典中获取与键对应的值

  Print(dict.get (age ))

  #keys取出所有钥匙

  print(dict.keys())

  #values获取字典中的所有值。

  print(dict.values())

  #items获取所有值对

  Print(dict.items())字符串处理方法字符串的常用方法

  说明

  字符串[开始:结束:步骤]

  字符串片段

  字符串分割

  字符串分段

  string.strip

  删除开头和结尾的空白

  string.rstrip

  删除字符串右边的空白。

  string.lstrip

  删除字符串的左边距。

  字符串.索引

  返回子字符串的第一个匹配项。

  字符串.替换

  字符串替换

  九月加入

  根据sep分隔符将迭代对象拼接成字符串

  字符串.计数

  计算字符串的子字符串

  字符串.查找

  返回子字符串的第一个出现位置。

  字符串. startwith

  字符串是以什么开头的吗?

  字符串. endwith

  字符串是以什么结尾的吗?

  正则表达式符号

  意义

  例子。

  可以匹配任何字符,但不包含换行符 \n

  pyt.on~python

  \

  转义字符,通常用于在字符中保留特殊元字符。

  10\ .3~10 .3

  离开

  逻辑或

  人A~人A还是人A

  []

  用于匹配一组字符。

  男人还是男人

  \d和\D

  \d匹配任何数字,\D不是\ d。

  今天\d ~今天3

  \s和\S

  \s匹配任何空白字符,\S不是\ s。

  喂\s ~喂

  \w和\W

  numpy模块中总结了常用的数据属性,通过genfromtxt函数可以读取外部的文本文件数据。

  #读入数据

  stu _ score=NP . genfromtxt(fname=r c:\ Users \ Administrator \ Desktop \ stu _ socre . txt ,delimiter=\t ,skip_header=1)

  #查看数据结构

  打印(类型(stu_score))

  #查看数据维度

  打印(stu_score.ndim)

  #查看数据的行数和列数

  打印(stu_score.shape)

  #检查数组元素的数据类型

  打印(stu_score.dtype)

  #检查数组元素的数量

  print(stu_score.size)数组的形状处理方法有reshape、resize、ravel、flatten、vstack、hstack、row_stack、column_stack。

  整形和调整大小都是数组的形状变化。

  猿猴的改变只是一个预览,没有直接改变阵列的重塑。

  resize方法不返回预览,而是直接更改数组的形状。

  如果需要将多维数组降维为一维数组,使用ravel、flatten和shape方法。

  arr4=np.array([[1,10,100],[2,20,200],[3,30,300]])

  Print(原始数组:\n ,arr4)

  #默认排序降维

  Print(数组降维:\n ,arr4.ravel())

  打印(arr4.flatten())

  print(arr 4 . shape(-1))

  #改变排序模式的降维

  print(arr4.ravel(order=F ))

  print(arr4.flatten(order=F ))

  print(arr 4 . shape(-1,order= f)) vstack,row_stack垂直堆叠数组

  水平堆叠数组

  线性相关计算功能

  解释

  零数

  生成零矩阵

  np .眼睛

  生成单位矩阵

  np .点

  阵列点积

  诊断

  矩阵主对角线与一维数组的转换

  np.ones

  生成一个所有元素为1的矩阵

  转置

  矩阵转置

  内部的

  计算两个数组的内积

  网络追踪

  矩阵的主对角元素之和

  np.linalg.det

  计算矩阵行列式

  np.linalg.eig

  计算矩阵的特征值和特征向量

  np.linalg.eigvals

  计算方阵的特征根

  np.linalg.inv

  方阵逆

  np.linalg.pinv

  计算伪逆

  np.linalg.solve

  计算Ax=b的线性方程组的解

  np.linalg.lstsq

  计算Ax=b的最小二乘解

  np.linalg.qr

  QR分解

  np.linalg.svd

  奇异值分解

  np.linalg.norm

  计算向量或矩阵的范数。

  python数据处理工具-pandas panda对应的数据结构和数据读取在此不做描述。

  数据类型转换和描述统计。通常,在获得数据后,您可以观察数据的形状和数据类型。

  修改数据类型、数值类型和时间类型。

  对数值型数据的统计描述和离散型数据的统计描述。

  #数据类型转换和描述统计

  #数据读取

  sec _ cars=PD . read _ table(r c:\ Users \ Administrator \ Desktop \ sec _ cars . CSV ,sep=,)

  #预览前五行数据

  sec_cars.head()

  #查看数据的行数和列数

  Print(数据集的行数和列数:\n ,sec_cars.shape)

  #检查数据集中每个变量的数据类型

  Print(每个变量的数据类型:\n ,sec_cars.dtypes)

  #修改二手车许可时间的数据类型。

  sec _ cars . boarding _ time=PD . to _ datetime(sec _ cars . boarding _ time,format=% y year %m month )

  #修改二手车和新车价格的数据类型

  秒_汽车。新价格=秒汽车。New_price.str[:-1]。astype(float )

  #再次检查每个变量的数据类型。

  sec_cars.dtypes

  #数据的描述统计

  sec_cars.describe()

  #数据的形状特征

  #挑选出所有数字变量

  num _ variables=sec _ cars . columns[sec _ cars . d types!=object][1:]

  #计算偏斜度和峰度的自定义函数

  def skew_kurt(x):

  偏斜度=x.skew()

  库尔特西斯=x .库尔特()

  #返回偏度值和峰度值

  返回pd。Series([skewness,kurtsis],index=[Skew , Kurt])

  #使用应用方法

  sec _ cars[数量变量]。应用(func=skew_kurt,axis=0)

  #离散变量的统计描述

  sec _ cars . describe(include=[ object ])

  #离散可变频率统计

  频率=秒_汽车。Discharge.value_counts()

  Freq _ ratio=Freq/sec _ cars . shape[0]

  Freq_df=pd。DataFrame({ 频率:频率,频率比率:频率比率})

  Freq_df.head()

  #将行索引重置为变量

  freq _ df . reset _ index(in place=True)

  Freq_df.head()字符和日期数据的处理

  数据处理:

  更改生日和手机号码tel两个字段的数据类型。根据生日和start_work增加两个字段,年龄和工龄。隐藏手机号码tel的中间四位数字。根据邮箱信息添加域名字段。把每个人基于对方领域的专业信息拿出来。#读入数据

  df=PD . read _ excel(r c:\ Users \ Administrator \ Desktop \ data _ test 03 . xlsx )

  #每个变量的数据类型

  打印(df.dtypes)

  #将生日变量转换为日期类型

  df . birthday=PD . to _ datetime(df . birthday,format=%Y/%m/%d )

  #将手机号码转换为字符串

  df.tel=df.tel.astype(str )

  #增加年龄和服务年限两栏。

  df[age]=pd.datetime.today()。year - df .生日.日期年

  df[ work age ]=PD . datetime . today()。year - df.start_work.dt.year

  #隐藏手机号码的中间四位数

  df . tel=df . tel . apply(func=lambda x:x . replace(x[3:7], **** )

  #取出邮箱的域名

  df[ email _ domain ]=df . email . apply(func=lambda x:x . split( @ )[1])

  #取出用户的专业信息

  df[ professor ]=df . other . str . find all( major:(。*?),)

  #删除生日、开始工作等变量

  df.drop([生日,开始_工作,其他],axis=1,inplace=True)

  Df.head()#常用日期处理方法

  dates=pd.to_datetime(pd。系列([1989-8-18 13:14:55 , 1995-2-16]),格式=%Y-%m-%d %H:%M:%S )

  打印(返回日期值:\n ,dates.dt.date)

  打印(返回季度:\n ,dates.dt.quarter)

  打印(返回时间:\n ,dates.dt.hour)

  Print(返回一年中的某一天:\n ,dates.dt.dayofyear)

  Print(返回一年中的第几周:\n ,dates.dt.weekofyear)

  Print(返回星期几的名称:\n ,dates.dt.weekday_name)

  Print(返回月的天数:\n ,dates.dt.days_in_month)数据清洗方法重复观察处理df。drop _ duplicates (inplace=true)

  缺失值处理当遇到缺失值NaN表示时,有三种方法可以处理:

  替换法:均值和中位数替换删除法:缺失数据比例小于5%时,插值法:回归插值法、K近邻插值法、拉格朗日插值法#数据读取

  df=PD . read _ excel(r c:\ Users \ Administrator \ Desktop \ data _ test 05 . xlsx )

  #缺失观察值的检测

  Print(数据集中是否有缺失值:\n ,any(df.isnull()))

  #删除记录的删除方法

  df.dropna()

  #删除方法的变量删除

  df.drop(年龄,轴=1)

  #替换方法正向替换

  df.fillna(method=ffill )

  #替换方法后跟替换。

  df.fillna(method=bfill )

  #替换法的常数替换

  df.fillna(值=0)

  #替代法的统计值替代

  df . fillna(value={ gender :df . gender . mode()[0], age: df.age.mean(), income: df.income.median ()})异常值处理对于异常值检测,有两种方法:

  标准差法盒图判别法

  获取数据子集的iloc,loc,ix(它们的语法可以表示为[row_select,cols_select])

  名字

  性别

  年龄

  0

  张三

  男人

  23

  一个

  李四

  妇女

  25

  2

  王二

  妇女

  23

  三

  丁一

  妇女

  21

  四

  吴礼

  男人

  20

  1=pd.dataframe ({name: [张三,李四,王二,丁一,吴立],

  性别:[男性,女性,女性,女性,男性],

  年龄:[23,25,23,21,20],列=[姓名,性别,年龄]})

  df1.iloc[1:4,[0,2]]

  df1.loc[1:3,[姓名,年龄]]

  df1.ix[1:3,[0,2]]名称

  年龄

  一个

  李四

  25

  2

  王二

  23

  三

  丁一

  21

  透视表函数生成透视表函数

  pd.pivot_table(data,values=None,index=None,columns=None,aggfunc=mean ,fill_value=None,margins=False,dropna=True,Margins_name=All )数据:指定构建数据透视表值的数据集:指定要拉入索引的值的字段列表:指定要拉入列的行标签的字段列表:指定要拉入aggfunc的列标签的字段列表:指定数值统计函数fill_value:指定标量。Margins:bool参数用于填充缺失值,是否显示行或列的合计值dropna:bool参数,是否删除整列的缺失字段margins_name:指定行或列的合计名称。挖掘算法实践线性回归模型。一元线性回归模型目标函数公式:

  关于目标函数的导数;

  1.设偏导数为0。

  2.公式翻译语言

  3.分解

  4.求解A和b。

  代码实现

  进口熊猫作为pd

  将matplotlib.pyplot作为plt导入

  将seaborn作为sns导入

  #导入数据集

  income=PD . read _ CSV(r c:\ Users \ Administrator \ Desktop \ Salary _ data . CSV )

  #绘制散点图

  sns.lmplot(x=YearsExperience ,y=Salary ,数据=收入,ci=无)

  #显示图形

  plt.show()

  #简单线性回归模型的参数解

  #样本量

  n=收入.形状[0]

  #计算自变量、因变量的总和、自变量的平方、自变量和因变量的乘积

  sum_x=收入。YearsExperience.sum()

  sum_y=收入。Salary.sum()

  sum_x2=收入。YearsExperience.pow(2)。总和()

  xy=收入。年资*收入。薪水

  sum_xy=xy.sum()

  #根据公式计算回归模型的参数

  b=(总和_ xy-总和_x*总和_y/n)/(总和_ x2-总和_x**2/n)

  a=收入。salary . mean()-b *收入。YearsExperience.mean()

  #打印出计算结果

  Print(回归参数A的值:,A)

  打印(回归参数b的值:,b)

  #导入第三方模块

  将statsmodels.api作为sm导入

  #使用收入数据集建立回归模型

  fit=sm.formula.ols(工资~年经验,数据=收入)。适合()

  #返回模型的参数值

  fit.params多元线性回归模型的目标函数公式:

  关于目标函数的导数;

  1.求偏导数为0。

  2.计算偏回归系统值。

  回归模型的假设检验-模型的显著性检验-F检验1。提出假设

  H0是原假设,假设模型的所有偏回归系统都是0,没有一个自变量可以形成因变量的线性组合,而H1是备选假设,与原假设相反。

  2.构建统计数据

  p和n-p-1分别是RSS和ESS的自由度。模型拟合得越好,ESS就越小,RSS就越大,F统计量就越大。

  KNN模型应用的算法思想是:确定未知样本的邻居数,根据某种指标(如欧氏距离)搜索出每个未知样本最近的K个已知样本来度量样本间的相似性,形成一个聚类对搜索到的已知样本进行投票,将每个聚类下类别最多的分类作为未知样本点预测的最佳K值选择:设置K个最近样本的投票权重,采用多重交叉验证,选取K个不同的值,在每个值下进行M重交叉验证,最后

  曼哈顿距离

  余弦相似性

  杰卡德相似系数

  天真模型SVM模型应用GBDT模型应用需要更新。

  转载请联系作者获得授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 2020年高考成绩分布表,2020年高考成绩统计,数据分析2020年全国各省高考成绩分布情况
  • ,,python实现数据分析与建模
  • python3 数据分析,python数据分析课堂
  • 《数据思维》,数据分析的思维导图
  • python数据分析就业方向,python数据分析毕业论文
  • python数据分析数据清洗,python中数据清洗
  • 基于Python的数据可视化,python数据分析及可视化处理的第三方库
  • 利用python进行数据分析豆瓣,python数据分析基础和利用python进行数据分析
  • python数据分析数据清洗,用python进行数据清洗
  • python对excel表格数据的统计和分析,python进行excel数据分析
  • 从零开始学Python数据分析与挖掘,自学python数据分析
  • python数据分析结构思维导图,python组合数据类型思维导图
  • 关联规则分析案例,关联规则数据分析题,关联规则的实际案例数据
  • 数据分析与商业数据分析,120个Excel商业数据分析实战案例
  • python数据分析excel读写,python 读取excel数据
  • 留言与评论(共有 条评论)
       
    验证码: