zoukankan      html  css  js  c++  java
  • pandas 3

    参考资料:https://mp.weixin.qq.com/s/9z3JVBkZpasC_F0ar_7JJA

    删除多列:df.drop(col_names_list, axis=1, inplace=True)

    转换数据类型:df[col_float] = df[col_float].astype('float32')

    替换:num_encode = {'col_1' : {'YES':1, 'NO':0}, 'col_2' : {'WON':1, 'LOSE':0, 'DRAW':0}} df.replace(num_encode, inplace=True)

    检查每列缺失数据的数量:return df.isnull().sum().sort_values(ascending=False)
    删除列中的奇诡字符:
    df['col_1'].replace('
    ', '', regex=True, inplace=True)
    df['col_1'].replace(' &#.*', '', regex=True, inplace=True)
    删除字符串开头的空格:df[col] = df[col].str.lstrip()
    两列连接,得到新的列:
    def concat_col_str_condition(df): # concat 2 columns with strings if the last 3 letters of the first column are 'pil'
    mask = df['col_1'].str.endswith('pil', na=False)
    col_new = df[mask]['col_1'] + df[mask]['col_2']
    col_new.replace('pil', ' ', regex=True, inplace=True) # replace the 'pil' with emtpy space

    字符串转时间:df.insert(loc=2, column='timestamp', value=pd.to_datetime(df.transdate, format='%Y-%m-%d %H:%M:%S.%f')) 
    
    

    1  engine是使用的分析引擎,读取csv文件一般指定python避免中文和编码造成的报错。

     2  df.info()帮助我们一步摸清各列数据的类型,以及缺失情况:

     3  使用Pandas时,尽量避免用行的思维来处理数据,要逐渐养成一种列向思维,每一列是同宗同源,处理起来是嗖嗖的快

    4  1)增加一列,用df['新列名'] = 新列值的形式

    2) 用drop函数制定删除对应的列,axis = 1表示针对列的操作,删除多列用[col1,col2,col3]

     3) 选取某一列: df['列名']即可          选取多列:df[['第一列','第二列','第三列'..]]

    4 简单的更改:df['旧列名'] =  某个值或者某列值,就完成了对原列数值的修改。

    改多列:df2[['aa','cc']]=90

     5  字符串类型是最常用的格式之一了,Pandas中字符串的操作和原生字符串操作几乎一毛一样,唯一不同的是需要在操作前加上".str"

     

    小Z温馨提示:我们最初用df2.info()查看数据类型时,非数值型的列都返回的是object格式,

    在常规实际应用中,我们可以先理解为object对应的就是str格式,int64对应的就是int格式,float64对应的就是float格式即可 

    6 字符串转数字

    df2['cc']=df2['cc'].astype(float)

     7  字符串转时间

    df2['dd']=pd.to_datetime(df2['dd'])

    8 基于位置(数字)的索引:含首不含尾

       选行

      选列

       选行和列

     9 基于名称(标签)的索引

      选行

       选列

      选行和列

    在pandas中,要表示同时满足,各条件之间要用"&"符号连接,条件内部最好用括号区分;如果是“或”的关系(满足一个即可),则用“|”符号连接:

     

     10 指定读取哪个sheet页

     11 纵向合并(一般是有相同的列,有几列不一样也没事)

     12 横向合并 

     

    left和rgiht分别对应着需要连接的左表和右表,left_index与right_index是当我们用索引连接时指定的参数,利用进行连接时,用“left_on = '姓名',right_on = '姓名'”

     左连接(left)和右连接(right),我们可以直观理解为哪边的表是老大,谁是老大,就听谁的(所有行全部保持),先看左连接,左表h1原封不动,右边根据左表进行合并,如果存在相关的名字,就正常返回数据,如果不存在(韩梅梅、李雷),就返回空(NAN)值;右连接就是听右表的,左表有则返回无则为空。

    外连接是两张表妥协的产物,我的数据全保留,你的也全保留,你有我无的就空着,你无我有的也空着

     12  去空: dropna函数默认删除所有出现空值的行,即只要一行中任意一个字段为空,就会被删除

    可以设置subset参数,例如dropna(subset = ['city']),来指定当一行中的city字段为空时,才会被删除

    13 去重 :drop_duplicates方法去重默认会删掉完全重复的行   对某行去重:subset

     

     14 排序:df2.sort_values(['cc','bb'],ascending=False)

    15 分组求和:

     对分组后的某些列求和

     

     16 不让分组的列变成索引

      不让分组的列变成索引

    也可以通过reset_index()实现不让分组的列变成索引

     17 切分(分桶)操作常用于一维数组的分类和打标(给数据分区间,并给每一区间打标签)

     

     18  apply()

  • 相关阅读:
    一个数组找出第k大的数(待补)
    变动二叉树
    判断一个二叉树
    Redis的过期策略和内存淘汰机制
    sql连接详解
    http 请求和格式
    java基础知识
    分页信息
    持续集成之Jenkins自动部署war包到远程服务器
    no-sql数据库之redis
  • 原文地址:https://www.cnblogs.com/testzcy/p/11578193.html
Copyright © 2011-2022 走看看