• Pandas基本操作


    具体数据文件

    1、apply()函数

      通过pandas新增一列,值为将时间戳转化成日期。例如1600123456 -> 20200914

    import pandas as pd
    import time
    def get_year_month_day(row):
        """将时间戳转化成日期"""
        sc = time.gmtime(row.time)
        result = time.strftime("%Y%m%d", sc)
        return result[:8]
    pd = pd.read_excel("info.xls")
    print(pd)
    pd["date"] = pd.apply(get_year_month_day,axis=1) #对列进行操作
    print(pd.head())
    View Code

     2、drop_duplicates()去重函数

      drop_duplicates(inplace=True,subset=['col1','col2'],keep='first')

        inplace=True 表示就地删除

        subset:某些列相同的删除

        keep : 值有first,last,False 分别表示保留重复项的第一个,保留最后一个,删除所有重复项,默认是first

    import pandas as pd
    pd = pd.DataFrame([[1,2,3],[3,4,5],[1,2,3],[1,1,3]])
    pd.columns = ['a','b','c'] #给每列命名
    print(pd)
    #只删除a,b列完全相同的行数据,保留重复数据的最后一条
    pd.drop_duplicates(inplace=True,keep="last",subset=['a','b'])
    print(pd.head())
    View Code

    3、pivot_table()数据透视函数

      pivot_table(index='class',columns='subject',values='grades') (index或columns两个参数至少要有一个,values如果未指定,取均值)

        index : 拿出一个Series对象的值作为行名

        columns :  拿出一个Series对象的值作为列名

        values :拿出一个Series对象的值作为行列的值,形成一个二维视图。

        aggfunc : count(计数),max(最大值),min(最小值),mean(均值,默认)

    import pandas as pd
    
    df = pd.DataFrame({'student': ['小红', '小红', '李华', '李华', '小天', '小天'],
                        'class': ['001','001','001','001','002','002'],
                       'subject': ['C', 'Java', 'Python', 'C', 'C', 'Python'],
                       'grades': [80,  90, 78, 90, 80, 78]})
    # print(df)
    # print("-"*20)
    """
    每个科目的均值
    """
    #由于只有grade是数值类型,因此只对其求均值
    df1 = df.pivot_table(index="subject")
    # print(df1)
    # print("-"*20)
    """
    求每班均值
    """
    df2 = df.pivot_table(columns="class")
    # print(df2)
    # print("-"*20)
    """
    求每个班级各个科目的均分
    """
    #由于数据只有grade数值型,values也可以省略
    df3 = df.pivot_table(index="class",columns="subject",values="grades")
    # print(df3)
    # print("-"*20)
    """
    求各个班级各个科目的最高分
    """
    df4 = df.pivot_table(index="class",columns="subject",values="grades",aggfunc="max",fill_value=0)
    # print(df4)
    # print("-"*20)
    """
    统计各个班级各个科目的人数
    """
    df5 = df.pivot_table(index="class",columns="subject",values="grades",aggfunc="count",fill_value=0)
    #print(df5)
    # print("-"*20)
    """
    求每个学生的最高分,最低分,平均分
    """
    df6 = df.pivot_table(index="student",values="grades",aggfunc=['max',"min","mean"])
    # print(df6)
    # print("-"*20)
    View Code

     4、merge()合并函数

      merge() df合并函数
      on="key" 以key关键字作为连接键。
      how = ['left','right','outer','inner'] 仅使用左边表的关键字,右边,交集,并集
     left : 仅考虑左边组合键的值
     right : 仅考虑右边组合键的值
      outer : 所有组合键的值,空值为NaN
     inner : 默认 ,所有组合键的有效值
    import pandas as pd
    
    eft = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                          'key2': ['K0', 'K1', 'K0', 'K1'],
                             'A': ['A0', 'A1', 'A2', 'A3'],
                             'B': ['B0', 'B1', 'B2', 'B3']})
    
    right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                          'key2': ['K0', 'K0', 'K0', 'K0'],
                             'C': ['C0', 'C1', 'C2', 'C3'],
                             'D': ['D0', 'D1', 'D2', 'D3']})
    print(left)
    print(right)
    result1 = pd.merge(left,right,on=["key1","key2"])
    #print(result1)
    result2 = pd.merge(left,right,how='left',on=['key1','key2'])
    print(result2)
    result3 = pd.merge(left,right,how='outer',on=['key1','key2'])
    print(result3)
    View Code

     5、get_dummies() : 将离散值one-hot化

      get_dummies() : 将一列离散值数据one-hot化
    data:df["salary"]
    prefix : 前缀
    prefix_seq : 前缀与值的连接符
    import pandas as pd
    
    all = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                         'key2': ['K0', 'K1', 'K0', 'K1'],
                         'A': ['A0', 'A1', 'A2', 'A3'],
                         'B': ['B0', 'B1', 'B2', 'B3']})
    print(all['key1'])
    all_left = pd.get_dummies(all["key1"],prefix="key1",prefix_sep="_")
    print(all_left)
    View Code

     6、concat()函数:合并两个视图

      参数值:

        data:两个需要合并的数据,放在一个列表

        axis: 在某个维度进行合并

    import pandas as pd
    
    data1 = pd.DataFrame({
        "col1":[1,1,1],
        "col2":[2,2,2]
    })
    data2 = pd.DataFrame({
        "col1":[3,3,3],
        "col2":[4,4,4]
    })
    all = pd.concat([data1,data2],axis=1)
    print(all)
    View Code





  • 相关阅读:
    C#中跨线程访问控件问题解决方案
    asp.net网站中配置文件的加密
    C#中XML使用总结
    连接加密Access数据库的字符串设置方法
    asp.net中常用的26个优化性能的方法
    C#中Math的使用总结
    关于ASP.NET页面打印技术的总结
    域登录获取用户名字的控制
    Web界面设计基本原则
    域登录获得用户名称
  • 原文地址:https://www.cnblogs.com/2016-zck/p/14736532.html
Copyright © 2020-2023  润新知