机器学习之pandas急速入门初级

学习机器学习,最基本的就是用Python语言对数据进行基本操作,面对众多需要学习的知识,基本上学完就忘了,贼难受啦!!这不我本着我下地狱的精神,总结了一下,但愿众生别放弃,哈哈。

pandas

先来个整体目录感受一下:

创建

  • 通过创建Series
  • 通过传递numpy array创建元素
  • 通过字典的结构进行创建,

查看数据

  • 查看数据类型(.dtypes)
  • 查看数据前或后几行数据(.head(),tail())
  • 显示索引(.index 就是每一行的id,可以标识每一行的唯一值)
  • 显示列名(.columns)
  • 只显示数据(.values,即不显示列名)

提取数据(这部分容易乱,有点过分)

标签提取数据和位置选择数据(标签可以理解为行名和列名)

提取某一列:(df['列名']),df.loc[:,'列名'],df.iloc[:,a]

提取多列:(df[['列名1',列名2',列名3']]),df.loc[:,['列名','列名2']],df.iloc[:,a:b]

提取某个单行数据:df.loc[a,:],(df.iloc[a],a为行数,且返回的数据类型为series),

提取某几行:(df[a:b])df.loc[a:b,:],df.iloc[a:b,:]。注意容易出错的地方:用行标签来指定输出时df['20180704']会出错,但df['20180704':'20180705']不会,

提取局部数据:(df.loc['20180705':'20180706',['列名1','列名2']]或者df.iloc[a:b,c:d])或者提取列和行不连续的数据:(df.iloc[[a,c],[a,d]])

提取数据中的单个数据:(df.loc[index[0],'列名1'])或者df.at[index[0],'列名1'],at是专门用于获取某个值的,,或者df.iloc[2,2]取第3行第3列的数据,或者df.iat[2,2],iat[]也是专门用于获取单个值的方法,

总结:

[]用于提取列时,不支持切片取多行列,[a:b]只对行进行切片,也就是[]只支持一维的操作,.loc[]:不仅支持一维的操作,也支持二维的操作,支持切片操作,但范围有限。iloc[]主要的特点就是进行切片操作,不支持标签操作,支持一维和二维的操作,at[],是.loc[]特殊方法.iat[]是.ilo[]c的特殊方法,这两者对应的功能是取单个值,只是效率高。

代码实现:

创建对象:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
'''

(1)创建对象

'''
"""******创建的数据的框的第一种方法*******"""
#创建series,这个将数据框的单个列拿出来后的,数据类型就是series
a = pd.Series([1,3,4,5,np.NaN,7,4,3])#注意空值的写法
print("series类型数据")
print(a)#默认数据类型

#创建连续的时间序列和内置的range()相似
dates = pd.date_range('20180701',periods=8)
#创建一个数据框,注意index控制行名,columns控制列名
#常见的产生随机数的数函数,np.random.rand,np.random.randint,np.random.randn
df = pd.DataFrame(np.random.randn(8,7),index=dates,columns=list('abcdefg'))
print("第一种创建方法结果")
print(df)
"""******创建的数据的框的第二种方法*******"""
#这种方法,依次以字典的形式创建,键就是列名,值就是数据,而行名,一般会自动生成
df2 = pd.DataFrame({'a':[5.,6,9,33],
                    'b':np.array([4]*4,dtype='int64'),
                    'c':'ha',#写一个值会默认填充,所有的行,写两个值会出错,会提示维度必须和其他一致
                    'd':['python','c','java','c#']})
#pd提供了很多生成数据的函数,如
#pd.Timestamp,pd.Series,pd.Categorical等用好这些函数可以产生一些特殊的值
print("第二种创建方法结果")
print(df2)

结果:

series类型数据
0    1.0
1    3.0
2    4.0
3    5.0
4    NaN
5    7.0
6    4.0
7    3.0
dtype: float64
第一种创建方法结果
                   a         b         c  ...         e         f         g
2018-07-01  0.474164 -0.298453  0.762399  ... -0.832252 -0.829000 -0.525417
2018-07-02  0.597638  0.031861  0.293669  ... -1.495900  0.655275 -0.657688
2018-07-03 -0.941270 -0.010800  2.059281  ...  0.205073  1.788395  0.306779
2018-07-04  0.658773 -0.304058 -0.818325  ... -0.496420  0.135895  1.302388
2018-07-05 -0.009313  0.519114  0.090704  ...  0.199784  0.524973  1.057487
2018-07-06  0.697587  1.012932 -1.662217  ... -1.306278 -0.465362 -0.649750
2018-07-07 -0.019078 -1.474736  1.877737  ... -0.479318 -1.357733  1.844780
2018-07-08  0.083440 -1.863479 -0.068155  ... -0.341920 -0.662433 -0.802808

[8 rows x 7 columns]
第二种创建方法结果
      a  b   c       d
0   5.0  4  ha  python
1   6.0  4  ha       c
2   9.0  4  ha    java
3  33.0  4  ha      c#

查看数据:

#查看df的数据类型和df2的数据类型
print("打印df数据类型")
print(df.dtypes) 
print("打印df2数据类型")
print(df2.dtypes) 
#打印数据   
print("打印df数据前5行数据")  
print(df.head())#默认显示前5行数据
print("打印df数据前3行数据")  
print(df.head(3))#可以指定显示的行数
print("打印df数据后3行数据")  
print(df.tail())#默认显示后5行数据  
#显示行名,专业一点叫索引
print("打印df行名")
print(df.index)
print("打印df2行名")
print(df2.index)#这个索引没有设置,默认从0开始
#查看数据框列名
print("打印df列名名")
print(df.columns)
print("打印df2的列名")
print(df2.columns)
#查看数据框数据
print("打印df数据")
print(df.values) #只显示数据,不显示列名,和行名

结果:

打印df数据类型
a    float64
b    float64
c    float64
d    float64
e    float64
f    float64
g    float64
dtype: object
打印df2数据类型
a    float64
b      int64
c     object
d     object
dtype: object
打印df数据前5行数据
                   a         b         c  ...         e         f         g
2018-07-01  0.474164 -0.298453  0.762399  ... -0.832252 -0.829000 -0.525417
2018-07-02  0.597638  0.031861  0.293669  ... -1.495900  0.655275 -0.657688
2018-07-03 -0.941270 -0.010800  2.059281  ...  0.205073  1.788395  0.306779
2018-07-04  0.658773 -0.304058 -0.818325  ... -0.496420  0.135895  1.302388
2018-07-05 -0.009313  0.519114  0.090704  ...  0.199784  0.524973  1.057487

[5 rows x 7 columns]
打印df数据前3行数据
                   a         b         c  ...         e         f         g
2018-07-01  0.474164 -0.298453  0.762399  ... -0.832252 -0.829000 -0.525417
2018-07-02  0.597638  0.031861  0.293669  ... -1.495900  0.655275 -0.657688
2018-07-03 -0.941270 -0.010800  2.059281  ...  0.205073  1.788395  0.306779

[3 rows x 7 columns]
打印df数据后3行数据
                   a         b         c  ...         e         f         g
2018-07-04  0.658773 -0.304058 -0.818325  ... -0.496420  0.135895  1.302388
2018-07-05 -0.009313  0.519114  0.090704  ...  0.199784  0.524973  1.057487
2018-07-06  0.697587  1.012932 -1.662217  ... -1.306278 -0.465362 -0.649750
2018-07-07 -0.019078 -1.474736  1.877737  ... -0.479318 -1.357733  1.844780
2018-07-08  0.083440 -1.863479 -0.068155  ... -0.341920 -0.662433 -0.802808

[5 rows x 7 columns]
打印df行名
DatetimeIndex(['2018-07-01', '2018-07-02', '2018-07-03', '2018-07-04',
               '2018-07-05', '2018-07-06', '2018-07-07', '2018-07-08'],
              dtype='datetime64[ns]', freq='D')
打印df2行名
RangeIndex(start=0, stop=4, step=1)
打印df列名名
Index(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype='object')
打印df2的列名
Index(['a', 'b', 'c', 'd'], dtype='object')
打印df数据
[[ 0.4741637  -0.29845338  0.76239901  1.12766539 -0.8322525  -0.82899974
  -0.52541728]
 [ 0.59763817  0.03186107  0.29366898  0.8881474  -1.49589993  0.65527546
  -0.65768787]
 [-0.94127016 -0.01080037  2.05928147  0.57408647  0.20507309  1.78839482
   0.30677869]
 [ 0.65877338 -0.30405806 -0.81832471  0.63417451 -0.49642033  0.13589513
   1.30238769]
 [-0.0093132   0.51911421  0.09070427  0.21256695  0.19978357  0.5249733
   1.05748712]
 [ 0.69758747  1.01293207 -1.66221737  1.51007092 -1.30627825 -0.46536231
  -0.6497497 ]
 [-0.01907807 -1.47473584  1.8777374   1.03489133 -0.47931771 -1.35773347
   1.84478003]
 [ 0.08344046 -1.863479   -0.06815489 -0.22271602 -0.34192    -0.66243283
  -0.80280836]]

提取数据

提取某一列

#提取某一列
 print("提取df2某一列")
 print("[]方法")
 a = df2['a']
 print(a)
 print("df2.loc[]方法")
 print(df2.loc[:,'a'])#这两个方法打印的形式不同
 print("df2.iloc[]方法")
 print(df2.iloc[:,0])

结果:

提取df2某一列
[]方法
0     5.0
1     6.0
2     9.0
3    33.0
Name: a, dtype: float64
df2.loc[]方法
0     5.0
1     6.0
2     9.0
3    33.0
Name: a, dtype: float64
df2.iloc[]方法
0     5.0
1     6.0
2     9.0
3    33.0
Name: a, dtype: float64

提取多列:

#提取多列
 print("[]方法")
 print(df2[['a','b','c']])
 print("df2.loc[]方法")
 print(df2.loc[:,['a','b','c']])
 print("df2.iloc[]方法")
 print(df2.iloc[:,0:3])#注意不包括3,

结果:

[]方法
      a  b   c
0   5.0  4  ha
1   6.0  4  ha
2   9.0  4  ha
3  33.0  4  ha
df2.loc[]方法
      a  b   c
0   5.0  4  ha
1   6.0  4  ha
2   9.0  4  ha
3  33.0  4  ha
df2.iloc[]方法
      a  b   c
0   5.0  4  ha
1   6.0  4  ha
2   9.0  4  ha
3  33.0  4  ha

提取单行:

#提取某一行
print("df2.iloc[]")
print(df2.iloc[2])
print("df2.loc[],")
print(df2.loc[2,:])

结果:

#提取某一行
print("df2.iloc[]")
print(df2.iloc[2])
print("df2.loc[],")
print(df2.loc[2,:])

提取多行:

#提取多行
print("[]方法")
print(df2[0:2])#输出两行
print("在[]中用标签来指定行")
print(df['20180704':'20180705'])
print("df2.loc[]方法")
print(df2.loc[0:2,:])
print("df2.iloc[]方法")
print(df2.iloc[0:2,:])

结果:

[]方法
     a  b   c       d
0  5.0  4  ha  python
1  6.0  4  ha       c
在[]中用标签来指定行
                   a         b         c  ...         e         f         g
2018-07-04  0.658773 -0.304058 -0.818325  ... -0.496420  0.135895  1.302388
2018-07-05 -0.009313  0.519114  0.090704  ...  0.199784  0.524973  1.057487

[2 rows x 7 columns]
df2.loc[]方法
     a  b   c       d
0  5.0  4  ha  python
1  6.0  4  ha       c
2  9.0  4  ha    java
df2.iloc[]方法
     a  b   c       d
0  5.0  4  ha  python
1  6.0  4  ha       c

提取单个数据

#提取单个数据
print("df.iloc[]方法")
print(df.iloc[1,1])#提取单个数据
print("df.iat[]方法")
print(df.iat[1,1])
print("df.loc[]方法")
print(df.loc[dates[1],'b'])
print("df.at[]方法")
print(df.at[dates[1],'b'])

结果:

df.iloc[]方法
0.03186106541551168
df.iat[]方法
0.03186106541551168
df.loc[]方法
0.03186106541551168
df.at[]方法
0.03186106541551168

提取局部数据

#提取局部数据
print("df.loc方法")
print(df.loc['20180704':'20180705',['a','b']])
print("df.iloc方法")
print(df.iloc[3:5,0:2])#注意最后一个数字不包括
#或者可以提取列和行不连续的数据
print("提取行或列不连续的数据")
print(df.iloc[[0,2],[1,3]])
#df.loc[['20180704','20180706'],['b','d']]会报错

结果:

df.loc方法
                   a         b
2018-07-04  0.658773 -0.304058
2018-07-05 -0.009313  0.519114
df.iloc方法
                   a         b
2018-07-04  0.658773 -0.304058
2018-07-05 -0.009313  0.519114
提取行或列不连续的数据
                   b         d
2018-07-01 -0.298453  1.127665
2018-07-03 -0.010800  0.574086

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值