导包
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
- 行索引:index
- 列索引:columns
- 值:values
DataFrame的创建
- 最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。
- 此外,DataFrame会自动加上每一行的索引。使用字典创建的DataFrame后,则columns参数将不可被使用。同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。
- DataFrame属性:values、columns、index、shape
dic={
'xiaoming':[88,66,55],
'lingling':[99,77,33],
'xiaoli':[55,88,65]
}
df1=DataFrame(data=dic,index=['语文','数学','英语'])
df1
lingling xiaoli xiaoming
语文 99 55 88
数学 77 88 66
英语 33 65 55
根据添加行索引添加行数据
df1.loc['物理']=[55,84,66]
df1
lingling xiaoli xiaoming
语文 99 55 88
数学 77 88 66
英语 33 65 55
物理 55 84 66
根据添加列索引添加列数据
df1['xixi']=[88,55,44,11]
df1
lingling xiaoli xiaoming xixi
语文 99 55 88 88
数学 77 88 66 55
英语 33 65 55 44
物理 55 84 66 11
对列进行索引
- 通过类似字典的方式 df[‘q’]
- 通过属性的方式 df.q
- 可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
对行进行索引
- 使用.loc[]加index来进行行索引
- 使用.iloc[]加整数来进行行索引
- 同样返回一个Series,index为原来的columns。
使用行索引(iloc[3,1] or loc[‘C’,’q’]) 行索引在前,列索引在后
df.iloc[1,2]
df.loc['语文','xiaoli']
行切片
df1['语文':'英语']
列切片
df1.loc[:,'lingling':'xiaoming']
- 直接用中括号时:
- 索引表示的是列索引
- 切片表示的是行切片
DataFrame的运算
df1+1
- DataFrame之间的运算,同Series一样:
- 在运算中自动对齐不同索引的数据
- 如果索引不对应,则补NaN
df2=DataFrame(data=np.random.randint(1,100,(4,4)),index=['A','B','C','D'],
columns=['a','b','c','d'])
df2
df1+df2
pandas处理空值操作
- isnull()
- notnull()
- dropna(): 过滤丢失数据
- fillna(): 填充丢失数据
- df.notnull().any()/all()来判断每行是否有空值
df3=DataFrame(data=np.random.randint(1,100,(