美文网首页
pandas学习1

pandas学习1

作者: 奇楠之后 | 来源:发表于2020-04-16 20:56 被阅读0次

    Series

    series 是一种类似一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的标签(索引)组成

    1. 仅有数据列表即可产生最简单的series
    import pandas as pd
    s1 = pd.Series([1,'a',5.2,7])
    #获取索引
    s1.index
    #获取数据
    s1.values
    
    1. 创建一个具有标签索引的series
    s2 = pd.Series([78,'kkk',67,90],index=['a','b','c','d'])
    
    1. 使用python字典创建series
    # key作为index 
    s3 = pd.Series([{'name':'haha','age':78}])
    
    1. series的查询
    # 查询方法和字典类似  获取单个数据返回是一个值
    s2['a']
    # 查询多个标签  返回仍是一个series对象
    s2[['a','b']]
    
    1. series的属性方法
      • value_counts() :各个数值的数量统计
      • apply :将函数作用于每一个value
      • str:针对series的每个string类型的value,做字符操作

    DataFrame

    1. 如何创建一个DataFrame对象
      df = DataFrame(data, index, columns, dtype, copy)
      • data表示要传入的数据 ,包括 ndarray,series,map,lists,dict,constant和另一个DataFrame
      • index和columns 行索引和列索引 格式['x1','x2']
      • dtype:每列的类型
      • copy:从input输入中拷贝数据。默认是false,不拷贝。
    2. dataframe对象基本属性
      文章
    3. 读取csv文件构建dataframe对象
      pd.read_csv() 函数各个参数含义
      • path:表示文件系统位置,url,文件型对象的字符串
      • sep 和 delimiter:用于对行中各字段进行拆分的字符序列和正则表达式
      • header :用作列名的行号,默认是第一行,如果csv文件没有应该设置为None
      • index_clo:用作行索引的列名或列编号
      • names:用作列名的列表对象,结合header = None
      • skiprows:需要忽略的行数(从文件开始出算起),或是需要跳过的行号列表(从0开始)
      • na_values:一组用于替换NA的值
      • comment:用于将注释信息从行尾拆分出去的字符(一个或多个)
      • parse_dates:默认false
      • keep_date_col:默认false
      • converters:用列号/列名跟函数映射关系组成的字典,{‘col’:function}会对col列的所有值应用函数function
      • dayfirst
      • date_parser:用于解析日期的函数
      • nrows:需要读取的函数,从文件开始出算起
      • iterator:返回一个textparser,以便逐块读取文件
      • chunksize:文件快的大小,用于迭代
      • skip_footer:需要忽略的函数,从文件末尾处算起
      • verbose
      • encoding:编码格式
      • squeeze:如果数据解析后仅剩一列,返回series
      • thousands:千分位分隔符
    1. dataframe操作
      4.1 查询--数值,列表,区间,条件,函数
      使用 df.loc[index,columns] 函数进行查询,该函数有两个参数,第一个是行标签,第二个是列标签(可选参数),两个参数既可以是列表也可以单个字符,如果两个参数都为列表,那么返回的是一个dataframe,否则,则为series
      • 使用单个label值查询数据
      # 准确的得到一个数
      df.loc[index,columns]
      # 区别于df.ix[index]  获取某行指定列的值
      df.loc[index,[col_name,col_name2]]
      
      • 使用值列表批量查询
      # 区别于df['col_name'],获取某列的指定行数据
      df.loc[[index1,index2,index3],col_name]
      # 返回一个dataframe,相当于截取一个小方块
      df.loc[[index1,index2],[col1,col2]]
      
      • 使用数值区间进行范围查询
      # 行按区间
      df.loc[index1:index2,col1]
      # 列按区间
      df.loc[index1,col1:col2]
      # 行和列都按区间
      df.loc[index1:index2,col1:col2]
      
      • 使用条件表达式查询
      # 使用简单查询
      df.loc[df['wendu']<-10,:]
      # 组合条件查询 &表示与 每个条件用()
      df.loc[(df[col1]<30)&(df[col2]>15),:]
      
      • 调用函数查询
      # 直接写lambda表达式
      df.loc[lambda df : (df.['bWenDu']<=30)&(df.[yWenDu]>=15),:]
      # 自己编写函数,查询9月份,空气质量好的数据
      def query_my_datas(df):
        return df.index.str.startswith('2018-09')&df['tianqi'] == '晴'
      df.loc[query_my_datas,:]
      
      4.2 新增数据列
      • 直接赋值
      # 去掉字符c
      df[:,'bwendu']  = df['bwendu'].str.replace('c','').astype('int32')
      # 新增一列数据数据
      df[:,'wencha'] = df['gaowen'] - df['diwen']
      
      • df.apply方法
        dataframe.apply有两个参数,第一是自定义函数(函数参数是一个series对象,是dataframe的行或列),第二个axis,axis=0(默认等于0)表示函数按列作用,此时series的索引是dataframe的index,axis=1表示函数按行作用,此时series的索引是dataframe的列名。返回的是一个新的series对象
      # 新建一个温度类型
      def get_wendu_type(x):
        if x['bwendu'] > 33:
          return '高温'
        if ['ywendu'] < -10:
          return '低温'
        return '常温'
      df['wendu_type'] = df.apply(get_wendu_type,axis=1)
      
      • df.assign方法
        不同于apply,该方法可以同时新增多个列,其次在apply中需要指定axis,在assign中默认传入dataframe的行series(apply axis=1)。该方法不会修改函数本身,返回一个新的对象
      df.assign(
        bwendu_huashi = lambda x : x['bwendu']*9/5+32,
        ywendu_huashi = lambda x : x['ywendu']*9/5+32,
      )
      
      • 按条件选择分组分别赋值
      # 广播机制 会新增一列 
      wencha_type = ''
      df.loc[df['bwendu']-df['ywendu']>10,'wencha_type'] = '温差大'
      df.loc[df['bwendu']-df['ywendu']<=10,'wencha_type'] = '温差正常'
      

    参考链接:
    pandas常用函数及操作
    dataframe基本函数
    pandas入门视频

    相关文章

      网友评论

          本文标题:pandas学习1

          本文链接:https://www.haomeiwen.com/subject/fdudvhtx.html