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
原文地址:https://www.cnblogs.com/idontknowthisperson/p/9621363.html