• DataFrame基础操作


    # -*- coding:utf-8 -*-
    
    """
    DataFrame是二维数据结构,即数据以行和列的表格方式排列。
    
    
    DataFrame的创建
    
    df = pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
    
    data: 数据类型,例如list、dict、series、ndarray、map、DataFrame
    index: 行的标签,行的KEY
    columns: 列的标签,列的KEY
    dtype: 每列的数据类型
    copy: 用于复制数据
    
    
    
    
    """
    
    import pandas as pd
    
    # 从list创建DataFrame 列表中的每个ITEM都是一行数据
    data = [u'张三', u'李四', u'王五', u'赵六']
    df = pd.DataFrame(data=data)
    print df
    #     0
    # 0  张三
    # 1  李四
    # 2  王五
    # 3  赵六
    
    # 每个ITEM都是一行数据
    data = [[u'张三', 20], [u'李四', 18], [u'王五', 26], [u'赵六', 30]]
    df = pd.DataFrame(data=data)
    print df
    #     0   1
    # 0  张三  20
    # 1  李四  18
    # 2  王五  26
    # 3  赵六  30
    
    # ITEM数据长度不等时,少的会用NaN来填充
    data = [[u'张三', 20], [u'李四', 18], [u'王五'], [u'赵六', 30]]
    df = pd.DataFrame(data=data)
    print df
    #     0     1
    # 0  张三  20.0
    # 1  李四  18.0
    # 2  王五   NaN
    # 3  赵六  30.0
    
    # 列表中嵌套字典,字典中的KEY值为列名
    data = [
        {'name': u'张三', 'age': 20, 'sex': 'man'},
        {'name': u'李四', 'age': 18},
        {'name': u'王五'},
        {'name': u'赵六', 'age': 30}
    ]
    df = pd.DataFrame(data=data)
    print df
    #     age name  sex
    # 0  20.0   张三  man
    # 1  18.0   李四  NaN
    # 2   NaN   王五  NaN
    # 3  30.0   赵六  NaN
    
    # 添加列名称
    columns = [u'姓名', u'年龄'] # 长度必须和最多的列数相等
    data = [[u'张三', 20], [u'李四', 18], [u'王五', 26], [u'赵六', 30]]
    df = pd.DataFrame(data=data, columns=columns)
    print df
    #    姓名  年龄
    # 0  张三  20
    # 1  李四  18
    # 2  王五  26
    # 3  赵六  30
    
    # 添加行名称
    index = ['001', '002', '003', '004']  # 长度必须和data行数相等
    columns = ['name', 'age']
    data = [[u'张三', 20], [u'李四', 18], [u'王五', 26], [u'赵六', 30]]
    df = pd.DataFrame(data=data, index=index, columns=columns)
    print df
    #     name  age
    # 001   张三   20
    # 002   李四   18
    # 003   王五   26
    # 004   赵六   30
    
    # 从dict创建DataFrame,字典中的每个KEY代表一列,KEY值为列名,value的长度必须相等
    data = {
        'name': [u'张三', u'李四', u'王五', u'赵六'],
        'age': [20, 18, 26, 30]
    }
    index = ['001', '002', '003', '004']
    df = pd.DataFrame(data=data, index=index)
    print df
    #      age name
    # 001   20   张三
    # 002   18   李四
    # 003   26   王五
    # 004   30   赵六
    
    # 从dict创建DataFrame,用series类型做为value,字典中的每个KEY代表一列,KEY值为列名,value的长度可不相等
    data = {
        'name': pd.Series([u'张三', u'李四', u'王五', u'赵六'], index=['001', '002', '003', '004']),
        'age': pd.Series([20, 18, 30], index=['001', '002', '004'])
    }
    df = pd.DataFrame(data=data, )
    print df
    #       age name
    # 001  20.0   张三
    # 002  18.0   李四
    # 003   NaN   王五
    # 004  30.0   赵六
    
    # 从dict创建DataFrame,指定列名会得到只有列名的DataFrame
    data = {
        'name': [u'张三', u'李四', u'王五', u'赵六'],
        'age': [20, 18, 26, 30]
    }
    columns = ['name1', 'age1']
    df = pd.DataFrame(data=data, columns=columns)
    print df
    # Empty DataFrame
    # Columns: [name1, age1]
    # Index: []
    
    
    # DataFrame列的操作
    
    data = {
        'name': pd.Series([u'张三', u'李四', u'王五', u'赵六'], index=['001', '002', '003', '004']),
        'age': pd.Series([20, 18, 30], index=['001', '002', '004']),
        'sex': pd.Series(['man'], index=['001'])
    }
    df = pd.DataFrame(data=data, )
    print df
    #       age name  sex
    # 001  20.0   张三  man
    # 002  18.0   李四  NaN
    # 003   NaN   王五  NaN
    # 004  30.0   赵六  NaN
    
    # 列的选择,通过指定列名
    print df['name']
    # 1      NaN
    # 001     张三
    # 002     李四
    # 003     王五
    # 004     赵六
    # Name: name, dtype: object
    
    # 列的添加,直接赋值
    df['addr'] = pd.Series(['beijing','shanghai','guangzhou'], index=['001', '002', '004'])
    print df
    #       age name  sex       addr
    # 1     NaN  NaN  man        NaN
    # 001  20.0   张三  NaN    beijing
    # 002  18.0   李四  NaN   shanghai
    # 003   NaN   王五  NaN        NaN
    # 004  30.0   赵六  NaN  guangzhou
  • 相关阅读:
    工作10年写不好一封邮件?
    邮件狂人告诉你:如何打造最强邮件处理流
    免费瘫软入院,付费发飙成壮汉,YoMail 想干嘛?
    我们要招5-10人,全要技术!
    如何有效的报告bug?
    黑科技 | 用实力打造邮件沟通新模式
    李叫兽去了百度,我们来聊聊营销
    你好,我想送你一本书
    上了这套密码锁,你就无敌了
    YoMail 邮箱客户端的社会化之路,起于邮箱,不止于邮件
  • 原文地址:https://www.cnblogs.com/idktp/p/9621363.html
Copyright © 2020-2023  润新知