zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Linux基础命令---显示登录用户logname
    Linux基础命令---查找用户信息finger
    第二十六课:jQuery对事件对象的修复
    jquery源码解析:jQuery静态属性对象support详解
    第二十五课:jQuery.event.trigger的源码解读
    第二十四课:jQuery.event.remove,dispatch的源码解读
    jquery源码解析:jQuery工具方法when详解
    第二十三课:jQuery.event.add的原理以及源码解读
    jquery源码解析:jQuery延迟对象Deferred(工具方法)详解2
    第二十二课:js事件原理以及addEvent.js的详解
  • 原文地址:https://www.cnblogs.com/idontknowthisperson/p/9621363.html
Copyright © 2011-2022 走看看