pandas专门为处理表格和混杂数据设计
import pandas as pd
from pandas import Series,DataFrame
5.1 pandas数据结构
Series 类似于一维数组+索引
data = pd.Series([1,2,3,4,5]) 生成Series数据
data.values data.index
pd.Series([1,2],index = ['a','b']) 设置索引
data['a'] 通过索引选取Series中单个或一组值
data[data%2==0] 进行类似numpy数组的运算index仍会保留
'a' in data
pd.Series(python字典) 可以通过python字典创建Series
可以通过设置index改变Series元素顺序
缺失值用NaN表示
pd.isnull(data) 检测缺失数据
pd.notnull
data1 + data2 可以根据索引自动对齐数据进行运算,类似join操作
data.name data.index.name 可赋值
index可以通过赋值方式修改
pd.DataFrame(XXX)传入元素为等长列表或np数组组成的字典可以生成DataFrame数据,字典key值为列名
frame.head() 前五行
pd.DataFrame(XXX, columns = [xxx], index = [xxxxx]) 可能产生NaN
frame['a'] 取列名为a的一列数据 等价于 frame.a(此时a需要是合理的变量名) 可以以列表形式取多列数据 返回的Series序列索引与原DataFrame相同
frame.loc[0] 行选取
可以用一个Series/值对某列赋值,需要长度相等
对不存在的列赋值可创建新列
del frame[列名] 删除列
通过索引方式返回数据视图,修改此返回数据也会影响源数据,Series.copy()可以创建副本
嵌套字典传给DataFrame,外层字典的键作为列名,内层键作为行索引
frame.T 转置
frame.columns.name frame.index.name
frame.values
index对象不可更改
不可变可以使Index对象在多个数据结构之间安全共享
labels = pd.Index(np.arange(3))
obj2 = pd.Series([1.5, -2.5, 0], index=labels)
obj2.index is labels→True
in操作可以用于index对象 查看某元素是否属于index对象
index对象可以包含重复的标签
5.2 基本功能
重新索引
frame.reindex(新索引列表) 根据新索引重排,若索引值当前不存在则NaN
列可以用columns关键字重新索引
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') ffill实现前向值填充
reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行,列可以用columns关键字重新索引
series.drop(索引列表) 删除Series行
frame.drop(行索引列表) 删除行
frame.drop(列名列表, axis=1) 删除列
frame..drop('c', inplace=True) 原地更改对象
索引、选取和过滤
Series索引
series(索引列表/数值范围切片) 选取对应元素