pandas学习1

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入门视频

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容