Python数据处理--pandas使用

数据结构实现方式:Series和DataFrame


Pandas本身是建立在NumPy之上的,故NumPy中的一维数组都可转化为Series

Series

  • 创建
可通过列表或数组直接创建
   a、s1 = Series([1,2,3])
   b、s2 = Series([1,2,3], index=['a', 'b', 'c'])
   c、s3 = Series(d1), d1={'a':1, 'b':2, 'c':3}
   d、s3.index  Index(['a','b','c'], dtype='object'),  s3.index = ['A', 'B', 'C']
  • 索引
同numpy
   a、s1.values 来获取全部数据
  • 数据结构转换
   a、s1.to_string():转化为字符串
   b、s1.to_dict():转化为字典
   c、s1.tolist():转化为列表
   d、s1.to_json():转化为JSON
   e、s1.to_frame():转化为DataFrame
   f、s1.to_csv():存储为CSV文件格式

DataFrame

  • 创建
   a、从CSV文件中读取
   b、字典创建:df = DataFrame(d2), d2 = {'prev':[-3,-2,-1], 'now':[0,0,0], 'next':[1,2,3]}
  • 行列索引
列索引 
    a、单列:df.counttime  df['counttime']  
   b、多列:df[['counttime', 'innum']]  df[df.columns[0:2]]
行索引
    a、单行:df.ix[0]  df.ix['a'] 
    b、多行:df.ix[0:2]  df.ix[['a', 'b']]
同时指定行列
    a、loc:使用行列的标签进行索引,df.loc['a':'c', 'counttime']
    b、iloc:使用证书进行索引,df.iloc[0:3, 0]
    c、ix:是loc和iloc的整合,可以混合使用整数和标签进行索引,df.ix[0:3,0]  df.ix[0:3, 'counttime']
    d、get_value、at、iat:用来获取单个数据
      df.get_value('a', 'counttime')
       df.at['a', 'counttime']
       df.iat[0,0]
  • 数据转换

布尔值数组和函数应用

  • 基于布尔值数组的条件过滤
   a、通过一些条件获取布尔值数组
   b、进行索引操作以获取符合条件的数据
   c、举例:
         (1)df['prev'] >= 2
            df[df['prev'] >= 2]
         (2)多条件过滤
            df[(df['prev'] >= 2) & (df['next']>=-2)] 
         (3)简化程序
            df.query("prev>=2 and next>=-2")
         (4)条件过滤值来自其他程序,则需要在此变量前加@
           df.query("(prev>=@g_value and next>=-2) or prev==1")
  • 函数应用
   a、数据分轴,0为纵轴(),1为横轴()
   b、df.sum() df.mean() df.max()  df.min()
   c、df.describe():给出关于数据的一些统计信息
   d、对于Series,可以使用map实现对每个元素进行同样的操作
   e、对于DataFrame,可以使用apply实现函数自定义,使用applymap实现对DataFrame中的每个数据进行相同的操作

数据清洗

  • 编码问题
这个主要用在爬虫爬取大量的文本数据时,爬取下来的网页一般编码是有问题的,需要使用ftfy中的fix_text来修复编码问题
  • 缺失值的检测与处理
   a、df.isnull():缺失值检测
   b、df.isnull().sum():可以计算出每列有多少个缺失值 
   c、df.fillna('missing'):指定特定的值来填补缺失值
      df.fillna(method='bfill', limit=1):指定相应的方法,来根据周围的之来填补缺失值,本例是使用缺失值后面的值,limit是用于限制连续填充的个数
                  ffill  
      df.interpolate(method='polynomial', order=2):插值方法进行填充
                       spline
  • 去除异常值
   (1)df.dropna()
   (2)df.dropna(how='all'):有一个数据为NaN,就去除整行或者整列数据,行列用axis来指定
   (3)df.dropna(how='any'):某行或某列的全部数据为NaN,才去除
  • 去除重复值与冗余信息
(1)df.drop_duplicates():去除重复数据
   a、subset=None:默认对整个数据进行去重,可通过制定此参数来对特定的列进行去重
   b、keep='first':在有重复值的时候,只保留第一次出现的数据,'last'保留最后出现的数据,'False'会去除所有重复的数据
   c、inplace=False:当为False时,不改变原来的数据,生成一个新的对象
(2)去除无用列
   a、df.drop('B',axis=1) 
  • 注意事项
    注意对原数据和过程数据的备份
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值