wps官网最新下载的网站(wps下载电脑版免费版安装)

  文章来源:拉钩数据分析训练营

  Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些。Pandas帮助填补了这⼀空⽩,使您能够在Python中执⾏整个数据分析⼯作流程,⽽不必切换到更特定于领域的语⾔,如R(R一般应用于生物领域)。与出⾊的 jupyter⼯具包和其他库相结合,Python中⽤于进⾏数据分析的环境在性能、⽣产率和协作能⼒⽅⾯都是卓越的。Pandas是 Python 的核⼼数据分析⽀持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas是Python进⾏数据分析的必备⾼级⼯具。Pandas的主要数据结构是 Series(⼀维数据)与 DataFrame (⼆维数据),这两种数据结构⾜以处理⾦融、统计、社会科学、⼯程等领域⾥的⼤多数案例。处理数据⼀般分为⼏个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想⼯具。Pandas库安装:pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

  Pandas是基于NumPy的升级,想要使用Pandas就必须要安装NumPy,调用时同理

  pandas的数据结构常用的主要有两种:

  Series(⼀维数据)与 DataFrame (⼆维数据)

  当然Pandas也支持三位数据和四维数据,但是不常用,主要了解一位数据和二维数据。

  pd.series(data,index,dtype,name,copy)

  Series是一维的数组,和NumPy数组不一样:Series多了索引

  主要有以下几个参数

  data:数据

  index:定义行索引,参数接收值为str,如果未指定,将会生成由0开始的整形正序数值,0,1,2,3,4,5,6……,如指定,将会生成我们指定的索引,如ABCDEF…,如果指定索引的话,一定要记得和我们数据的个数要相等。

  dtype:定义数据类型,参数接收值为str('int','float16','float32'…..),未指定的话会根据我们输入的数据自动识别。

  name:定义系列名称(列名),参数接收值为str。

  copy:复制输入数据,参数接收值为bool,默认为False。

  其中我们经常设置的参数为data,index,以及dtype,

  series常用创建方式有三种:

  1)只输入data参数不设置索引:

  0array([1, 2, 3, 6, 9])

  0 1

  1 2

  2 3

  3 6

  4 9

  dtype: int32

  2)按列表指定索引:

  A 1.0

  B 2.0

  C 3.0

  D 6.0

  E 9.0

  Name: a, dtype: float64

  3)按字典键名指定索引

  语文 149

  数学 130

  英语 118

  文综 285

  Python 122

  dtype: int64

  Series是一维的,功能比较少,DataFrame是二维的,多个Series公用索引(列名),组成了DataFrame,像 Excel一样的结构化关系型数据。

  DataFrame的两种创建方式

  1)列表定义列索引:

  0d3fdb0fc7e6296173d9962b6d5e47e1.png

  2)按字典键名指定列索引

  05d2969102e3700e7de9bfc13a0cf6d9.png

  常用的数据查看方法:

  # 查看其属性、概览和统计信息

  df.head(10) # 显示头部10⾏,默认5个

  df.tail(10) # 显示末尾10⾏,默认5个

  df.shape # 查看形状,⾏数和列数

  df.dtypes # 查看数据类型

  df.index # ⾏索引

  df.columns # 列索引wps office 官方的下载的地方在哪

  df.values # 对象值,⼆维ndarray数组

  df.describe() # 查看数值型列的汇总统计,计数、平均值、标准差、最⼩值、四分位数、最⼤值

  http://

  df.info()

  # 查看列索引、数据类型、⾮空计数和内存信息

  (100, 3)

  a54e5594dad215314bca926db521d630.png

  1457dd2936e5f9ee815d7f482fcc4bce.png

  Python int32

  Math int32

  En int32

  dtype: object

  <class 'pandas.core.frame.DataFrame'>

  RangeIndex: 100 entries, 0 to 99 #共有三行,行索引从0到99

  Data columns (total 3 columns): #共有三列

  # Column Non-Null Count Dtype

  — —— ————– —–

  0 Python 100 non-null int32 #Python列有100个非空值,数据类型为int32

  1 Math 100 non-null int32 #Math列有100个非空值,数据类型为int32

  2 En 100 non-null int32 #En列有100个非空值,数据类型为int32

  dtypes: int32(3)

  memory usage: 1.3 KB #占用内存1.3KB

  4f4b3ba2a65c19e99c8fc2fc817140ca.png

  array([[ 29, 7, 58],

  [144, 0, 34],

  [103, 113, 83],

  .

  .

  .

  [118, 29, 64],

  [ 41, 46, 6],

  [135, 17, 35]])

  Index(['Python', 'Math', 'En'], dtype='object')

  RangeIndex(start=0, stop=100, step=1) #起始索引为0,终止所以为100,步长为1

  Panda常用数据输入和输出有四种类型,csv文件、Excel文件、HDF5以及SQL读写,下面分别介绍:

  4.1.1.csv文件写入

  4.1.2.csv文件加载

  注意:

  1.index_col参数 –设置行索引

  如果我们的文件没有行索引这一列的话,这个参数尽量不要设置,否则会把数据的第一列作为行索引;而如果我们的文件有行索引这一列的话(一般在第一列),尽量设置这个参数为0,否则会把行索引作为数据的第一列,自动添加一列为行索引;这个也可以赋值其他的索引(如12345..,比如这里赋值2的话,math这一列的值就会成为行索引),赋值哪个列索引,这一列的值就会变成行索引.

  2.header参数 –设置列索引

  如果我们的文件没有列索引这一列的话,一定要设置这个参数为None,否则会把数据的第一行作为列索引。如果我们的文件有行索引这一列的话(一般在第一列),尽量设置这个参数或者设置为'infer',否则会生成一个从0开始的递增数列作为列索引

  读写Excel之前,需要先安装两个库

  读取Excel文件:pip install xlrd -i

  https://

  pypi.tuna.tsinghua.edu.cn

  /simple

  写入Excel文件:pip install xlwt -i

  https://

  pypi.tuna.tsinghua.edu.cn

  /simple

  4.2.1.写入Excel

  以上即为常用的几个写入Excel方法to_excel的参数,我们一般写入文件的时候就写一个文件名就可以,不用设置这么多的参数。

  上边的代码执行完毕写入的数据是这样的:

  040d832d1bf8b10cbb788b87e6224c96.png

  4.2.2.读取Excel

  上边的代码执行完毕读取的数据是这样的:

  5d8e17215662a9c56c69d6ed9f9b19db.png

  读写HDF5之前,需要先安装包:

  pip install tables -i

  https://

  pypi.tuna.tsinghua.edu.cn

  /simple

  HDF5是⼀个独特的技术套件,可以管理⾮常⼤和复杂的数据收集。

  HDF5,可以存储不同类型数据的⽂件格式,后缀通常是.h5,它的结构是层次性的。

  ⼀个HDF5⽂件可以被看作是⼀个组包含了各类不同的数据集。

  6e1a0119246513db1551aaf7f1279c26.png

  对于HDF5⽂件中的数据存储,有两个核⼼概念:group 和 dataset

  dataset 代表数据集,⼀个⽂件当中可以存放不同种类的数据集,这些数据集如何管理,就⽤到了group

  最直观的理解,可以参考我们的⽂件管理系统,不同的⽂件位于不同的⽬录下。

  ⽬录就是HDF5中的group, 描述了数据集dataset的分类信息,通过group 有效的将多种dataset 进⾏管

  理和区分;⽂件就是HDF5中的dataset, 表示的是具体的数据。

  4.3.1.写入HDF5文件

  4.3.2.读取HDF5文件

  读取结果为:

  a3a7d7f5cf57921c7a79e4a9c470ba7b.png

  写SQL之前,需要安装两个库

  pip install sqlalchemy -i

  https://

  pypi.tuna.tsinghua.edu.cn

  /simple

  pip install pymysql -i

  https://

  pypi.tuna.tsinghua.edu.cn

  /simp

  其中SQLAlchemy是Python编程语⾔下的⼀款开源软件。提供了SQL⼯具包及对象关系映射(ORM)⼯具,可以理解为数据库引擎,

  pymysql则是python中类似于mysql的一个包wps官网的下载网址在哪里(wps下载电脑版免费吗)。

  数据库的配置,可以查看:https://docs.sqlalchemy.org/en/13/core/engines.html

  其中mysql数据库的常见连接方式有三种,常用最后一种连接方式:

  读写SQL之前的操作:

  4.4.1.将数据写入MySQL数据库

  4.4.2.读取MySQL数据库中的数据

  读取的数据为:

  0e599aa59fd1ae2248c7b8767a524f37.png

  5.1.1.获取单列数据

  5.1.2.获取多列数据

  标签选取,就是按照索引标签选取,调用方法为.loc,即location。

  Python 0

  Math 29

  En 113

  Name: A, dtype: int32

  e06fd5b55cc33c288063ef67a109bb7c.png

  0

  A 0

  C 137

  F 3

  Name: Python, dtype: int32

  10b50bc9852b43470313ebf98813fd5b.png

  55f8d4d4c1e79919e5919f8f1bc4b469.png

  可见,按标签选取数据和之前学的numpy以及python的索引和切片方式是一样的,只不过要注意什么时候用双中括号,什么时候用单中括号,且按照标签选取是左闭右闭的,选取的数据包括结束的那个标签。

  位置选取类似于标签选取,但是用的是标签所对应的实际索引,行列索引都是从0开始,这时候的选取是左闭右开的,不包括切片结尾的索引数据

  数据准备:

  布尔索引,简单来说是我们先设置一个条件,这个条件输出的是布尔值True和False,然后我们用类似于numpy的花式索引的方式选取的方式调用条件,来达到按条件选取数据的目的,具体操作如下:

  准备数据

  输出值为:

  A True

  B False

  C False

  D False

  E False

  F True

  G False

  H True

  I True

  J False

  Name: Python, dtype: bool

  接下来我们调用这个条件

  67190791c5324a0a4540ce84b05d2a24.png

  由结果可见,用布尔索引的方式,达到了按条件选取数据的目的,当然,也可以用与条件和或条件等复杂逻辑运算来做更进一步的筛选:

  也可以使用聚合函数来进行条件选取:

  那么如果想选取与条件相反的数据呢,就在条件前面加上~即可

  如果想选取在我们所列出的数组中的数据,可以用isin函数:

  isin 同样也可以使用~来选取不存在数组中的函数,用法同上。

  数据准备

  6.1.1.行合并,竖直方向增加

  行合并还可以用append的方式

  6.1.2.列合并,水平方向增加

  insert只能插入列,不能插入行,插入行用append

  merge合并的效果类似于SQL中的表连接,具体使用方法如下:

  准备数据:

  上边用concat的列合并,是直接在水平方向上叠加,并不考虑连接的值是否相等的问题,比如

  得出来的数据是将两个Dataframe横向叠加了

  a215f25c99ca4e8f1adca3984d2d1158.png

  这时候如果想要实现像MySQL的表连接一样的效果,就需要用到merge方法:

  180e5b9e28a1ab490b02f587b80e9b51.png

  42ea2fcfdb5c97487253415a0be025ce.png

  9f4e308a0e97ee769a35ac44096f8de3.png

  准备数据:

  drop_duplicates的参数:一个不写全按照默认值处理 1.

  subset: 列标签或标签序列,可选仅考虑某些列来标识重复项,默认使用所有列 2.

  keep:确定要保留的重复项(如果有),默认为first

  ‘first’:保留第一次出现的重复项,其余全删除。’last‘:保留最后一次出现的重复项,其余全删除。False:删除所有重复项,一个也不留。

  注意first和last是str,要加引号,False不用加。

  3.inplace: 是否改变原变量数据,默认为False,如果设置为Ture将会改变原变量,慎用。 4.ignore_index: 是否为结果重新编排新的行索引,默认为False,设置为True的话,返回的结果行索引为从0开始重新递增的新行索引,比如默认返回的数据行索引是0,3,5,6,8,10,设置为True的话返回的结果的行索引就会变成0,1,2,3,4,5。

  构造数据:

  e853b4534134a5f6e296caefe62759bb.png

  22e830684208c2fb6d7bb6cc58cc03b7.png

  dropna参数解析: 1)

  axis=0, 确定要删除的是包含空值的行还是列,默认是0即行,1为列 2)

  how='any', 确认要删除这一行或这一列需要满足的条件,默认为any,只要有一个空值就删除,all要这一行或这一列都为空值才删除 thresh=None, 此行或者此列非空值的个数要大于等于int的情况下才保留这一行或这一列,默认为None,比如上表

  当thresh=None或者不写时,默认只要有空值就删除这一行,那么最后剩下行索引为7的这一行当thresh=0时,保留所有行,因为所有行的非空值个数都大于等于0个当thresh=1时,去掉第1行,因为其他行的非空值个数都大于等于1个当thresh=2时,去掉前2行,因为其他行的非空值个数都大于等于2个当thresh=3时,去掉前3行,因为其他行的非空值个数都大于等于3个当thresh=4时,去掉前4行,因为其他行的非空值个数都大于等于4个当thresh=5时,去掉前5行,因为只有最后三行的非空值个数都大于等于5个当thresh=6时,去掉前6行,因为只有最后两行的非空值个数都大于等于6个当thresh=7时,去掉前7行,因为只有最后一行的非空值个数都大于等于7个当thresh=8或以上时,去掉所有行,因为只有七列,不可能存在有8个非空值的行

  3)subset=None, 只删除指定列中含有缺失值的行,sunset 的值要为数组或者none

  dfa.dropna(subset=np.array([3])) #这里就是只删除了列索引3中含有空值的行

  4)inplace=False,是否改变原变量数据,默认为False,如果设置为Ture将会改变原变量,慎用。

  数据准备:

  9ea4e9719f43e0306e568edfa4c0dfce.png

  b66e042194941baa24f1cfe506903986.png

  drop参数解析:

  1)

  labels=None,确定要删除的项目,可以是行列索引(0,1,2,3..)也可也是行列的标签,删除单个的时候可以是str/int或者list,删除多个的时候必须是一个列表['big','small','mid']…。 2)

  axis=0,确定要删除的是列还是行,0为行,1为列,默认0. 3)

  index=None,相当于axis=0,默认为None 4)

  columns=None,相当于axis=1,默认为None 5)

  level=None,当索引为多重索引的时候,删除指定级别的对应索引行数据,默认为None。

  比如此例中,行为2重索引,那么我们在删除行索引标签为length的行时候,要制定level=1,因为length的索引级别在第二级别,否则会报错;而当索引不是多重索引不要设置level的值或者设置None,否则也会报错。 6)

  inplace=False,是否改变原变量数据,默认为False,如果设置为Ture将会改变原变量,慎用。

  数据准备:

  filter参数解析:

  items:精确匹配,保留标签/索引为列表中所列的值的行或者列,items的值为列表,默认为None。

  like:模糊匹配,保留了标签/索引含有所列字符串内字符的行或者列,like的值为str,默认为None。

  regex:正则匹配,默认为None。

  axis:确定要进行筛选的是行还是列,0为行,1为列,注意这里和之前不同的是,

  filter的axis参数默认值是1。

  数据准备:

  数据准备:

  rename参数解析

  mapper=None,定义要修改的值,mapper值为字典,冒号前为要修改的值,冒号后为要改为的值,与axis配合使用,默认为None。

  axis=None,定义要修改行还是列,与mapper配合使用,默认为None。

  index=None,定义要修改的值,修改行索引,mapper值为字典,冒号前为要修改的值,冒号后为要改为的值,默认为None。

  columns=None,定义要修改的值,修改列索引,mapper值为字典,冒号前为要修改的值,冒号后为要改为的值,默认为None。

  一般常用的是index和columns,mapper和axis不常用。

  inplace=False,是否改变原变量数据,默认为False,如果设置为Ture将会改变原变量,慎用。

  level=None,当索引为多重索引的时候,修改指定级别的对应的索引标签,默认为None。

  8.2.1.replace

  replace参数解析(常用):

  to_replace=None,要修改的值,值类型可以是int,float,列表,字段等

  value=None,要改为的值,值类型可以是int,float,列表,字段等

  注意多对多修改to_replace和value值的个数要相等。

  inplace=False,是否改变原变量数据,默认为False,如果设置为Ture将会改变原变量,慎用。

  8.2.2.map映射元素转变

  map WPS office的官网下载地址在哪里 只能针对一列,就是Series,map是起到映射的作用,即把df的值传递给它里边的参数,map既可以是序列,也可以是函数

  X NaN

  B NaN

  C 3.140

  D 3.140

  E 2.718

  F NaN

  H 1108.000

  I 3.140

  J NaN

  Y 2.718

  Name: 人工智能, dtype: float64

  X True

  B True

  C True

  D True

  E True

  F True

  H True

  I True

  J True

  Y True

  Name: Keras, dtype: bool

  07c7038373614ec7caeee2a5e89b39d7.png

  8.2.3.apply、applymap、transform映射元素转变

  apply既可以操作Series又可以操作DataFrame

  apply是起到映射的作用,即把df的值传递给它里边的参数,apply既可以是序列,也可以是函数

  当apply操作的是一列的时候,用法和效果是和map一样的,是一个Series

  当apply操作的是多列的时候,返回的结果是个DataFrame

  cc7c04f0ae34dfa2d8f6b1566d0a5889.png

  504417e80f597c9cb553005c62b7f737.png

  a94c78ea40e5cb005c59507571a8fb23.png

  07bc1bf2e35a7345170db9399e4cf592.png

  针对单列和多列的计算,applay和transform的用法和效果是一样的,但是transform不能对整体进行操作,也就是说使用transform时必须要指定对哪一列或者那几列进行什么样的操作,关于applay和transform的具体异同点,可查看下方链接

  applay和transform的异同点:

  https://www.

  jb51.net/article/149789

  .htm

  而applymap是对DataFrame中的所有元素进行操作,不能聚合,只能逐个操作,关于apply和applymap的具体区别可查看以下链接

  pandas中的map()、apply()、applymap()函数的区别:

  https://www.

  cnblogs.com/jason–/p/1

  1427145.html

   wps电脑版下载的网站在哪(wps官网最新登录入口)07bc1bf2e35a7345170db9399e4cf592.png

  8.2.4.打乱随机抽样和哑变量

  1)打乱随机抽样

  有时候需要从大量数据中随机抽样,但是按顺序选难免没有参考性,这时候就可以使用permutation和take的组合进行重排打乱选取样本数据:

  dc7a8c3322f64f369e7af0988a72dc0d.png

  2)哑变量

  ff319f7b4a045f31382d3c52a195df1d.png

  2af6de0da7ef54ba73cfd1235bbf1be8.png

  前面在numpy说到过行列转置,行列转置是直接将行列的位置调换,但是时对行列的整体进行转置,在遇到多层索引的时候,不能对某一层索引进行单独的行列转置,这时候就用到了pandas的行列转置操作。

  39b0f8526ad848c64b018b1c81b298b0.png

  由图可见,行索引是分两级的,这时候如果想对行索引进行单级别的行列转换,就需要用到unstack函数:

   wps的官网下载地址是什么0474c702420652cd28cc94ee498b9d9d.png

  213ec621d6002140128d21195a85606a.png

  有行转列就有列转行,列转行要用到的函数是stack

  26969728802e6a488dc2c573799061b3.png

  数据大概就是上图这样。

  行列转换还可以套着用:

  52c6d5e9020e12eb6f74113f164b2699.png

  这样就把原来的二级行索引变成了列索引,列索引变成了二级行索引。

  行列转换还可以配合聚合函数使用,直接计算某一级索引的聚合值:

  86c0ca081bcbcfa5245c8cfddbd72733.png

  5ee346e120f00a37d4637449e7e21239.png