【数据挖掘】——pandas中Series和Dataframe

一、Series

  类似numpy中的一维数组,但series更灵活,可以自定义索引。

  • 创建一维数组:①直接创建:s=Series(data=[1,2,3,4],index=list(‘abcd’))
           ②通过array创建: s = np.array([1,2,3,4])
                    pd.Series(s)
           ③通过list创建: s= [1,2,3,4]
                   pd.Series(s)
           ④通过字典创建: dict={‘小明’:1,‘小红’:2,‘小亮’:3,‘小张’:4}
                       s=Series(dict)
            字典的key变为数组的索引,字典的value变为数组的value

  • 获取数组中的数据:s.values

  • 获取数组中的索引:s.index

  • 获取数据中的键值对:list(s.iteritems())

  • 获取数组中的某个值:①按索引获取:s[ ‘小明’ : ’小亮’ ]
               ②按位置获取:s[ 0:2 ]

  • 修改索引:s.index=list[ ‘abcd’ ]在原数组修改
          m=s.reindex([‘a’,‘b’,‘c’])返回一个新的数组

  • 删除数组中的元素:s.drop(‘小明’)

  • 数组的运算:根据索引对相应数据计算,如果两个数组中找不到相同的index,对应位置返回nan

  • 布尔数组过滤:s[s>3]首先返回s>3的布尔值,然后进行判断输出

  • 数组与数计算:给每一个元素都进行相应计算(与numpy同)

二、 Dataframe

  是一个二维表,可存储不同类型的数据

  • 创建二维数组:①直接创建:pd.DataFrame([[‘1’,‘2’,‘3’],[‘4’,‘5’,‘6’]]])
           ②通过二维数组创建:m=np.random.randint(0,10,(3,3))
                       m=DataFrame(m,index=[1,2,3],columns=[‘a’,‘b’,‘c’])
           ③通过字典创建: dict={‘name’:[‘t’,‘r’,‘y’],‘score’:[‘1’,‘2’,‘3’]})
                        m=pd.Dataframe(dict)或m=pd.Dataframe.from_dict(dict)
                    字典的key转换为列索引;字典中每个key对应值个数不同时,转化后,没有值的位置返回nan
  • 获取行、列数:m.shape()
  • 获取行索引:m.index.tolist()
  • 获取列索引:m.columns.tolist()
  • 获取数据类型:m.dtypes
  • 返回数组信息:m.info()
  • 获取前几行:m.head()
  • 获取后几行:m.tail()
  • 获取某一列:m[‘索引名’]返回的是一个Series
  • 获取多列:m[ [ ‘索引名1’, ‘索引名2’ ] ] 返回的是一个DataFrame
  • 获取多行:m[0:2]使用切片
  • 获取多行多列:m[0:2] [ [ ‘索引名1’, ‘索引名2’ ] ]
           m.iloc[1:3,2:5]通过位置信息提取
           m.loc[[1,2],[‘b’,’c’]]通过索引信息提取

三、数据处理

1.缺失值处理:

①删除缺失值

Series:
   删除nan:s.dropna( )
   返回不为空的值:s.notnull( )返回值为布尔值
   过滤空值:s [ s.notnull( ) ]

Dataframe :

    m.dropna(axis=1,how=‘any’) 默认只要包含nan则删除整行,axis表示按列/列判断,how表示是全部为nan时删除/只要包含一个nan即删除
    m.dropna(thresh=1) 只要有1个元素不是nan就保留

②填充空缺值:

  m.fillna(m.mean(),inplace=True)inplace表示是否在原数据上修改,或返回一个新的数组

填充方式

  • 0固定值填充
  • m.mean()均值填充
  • method=‘ffill’/'bfill’用其前/后面的值填充(用limit限制填充数量,axis控制填充方向)

2.去除重复:

判断是否重复:m.drop_duplicated( )返回布尔值
去除重复值:m.drop_duplicates( )
指定列去除重复值:m.drop_duplicates([‘索引名’] ,inplace=True,keep=last)keep代表重复值中保留哪一个

3.合并:

m.join(n,how=‘left’)针对行操作, how表示连接方式:left、right、outer。选择left时,以m为主,选择outer时,所有元素均含有。
pd.merge(m,n,how=‘left’)针对列操作,类似数据库操作

猜你喜欢

转载自blog.csdn.net/m0_46568930/article/details/111408712