pandas中DataFrame相关
Posted lzhc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas中DataFrame相关相关的知识,希望对你有一定的参考价值。
1.创建
1.1 标准格式创建
DataFrame创建方法有很多,常用基本格式是:DataFrame 构造器参数:DataFrame(data=[],index=[],coloumns=[])
In [272]: df2=DataFrame(np.arange(16).reshape((4,4)),index=[‘a‘,‘b‘,‘c‘,‘d‘],columns=[‘one‘,‘two‘,‘three‘,‘four‘]) In [273]: df2 Out[273]: one two three four a 0 1 2 3 b 4 5 6 7 c 8 9 10 11 d 12 13 14 15
1.2 用传入等长列表组成的字典来创建
In [204]: data={‘c‘:[‘1‘,‘2‘],‘a‘:[‘5‘]} #创建不等长字典序列 In [205]: data Out[205]: {‘a‘: [‘5‘], ‘c‘: [‘1‘, ‘2‘]} In [206]: df=DataFrame(data) Traceback (most recent call last): ... ValueError: arrays must all be same length # 报错,传入的数组必须等长 In [207]: data={‘c‘:[‘1‘,‘2‘],‘a‘:[‘5‘,‘6‘]} #创建<strong>等长字典序列 In [208]: df=DataFrame(data) In [209]: df Out[209]: a c # 创建完成后‘a‘,‘c‘自动按照字典序排序,并且创建时自定加上索引 0 5 1 1 6 2
创建完成后‘a‘,‘c‘自动按照字典序排序,并且创建时自定加上索引
In [210]: df=DataFrame(data,columns=[‘c‘,‘a‘]) In [211]: df Out[211]: c a #按照指定顺序创建。 0 1 5 1 2 6
1.3 传入嵌套字典(字典的值也是字典)创建DataFrame
如果指定了columns名称,则会按照指定顺序创建。
In [227]: nest_dict={‘shanghai‘:{2015:100,2016:101},‘beijing‘:{2015:102,2016:103}} In [228]: nest_dict Out[228]: {‘beijing‘: {2015: 102, 2016: 103}, ‘shanghai‘: {2015: 100, 2016: 101}} In [229]: df1=DataFrame(nest_dict) In [230]: df1 Out[230]: beijing shanghai 2015 102 100 2016 103 101
2.增删改查
2.1 增
创建新列
df[‘b‘]=1
l = [1,2,3]
df[‘c‘]=l
添加新行
将列表中的数据添加到dataframe中
df = pd.DataFrame(columns=[u‘设备号‘, u‘节目‘, u‘类型‘, u‘完整度‘, u‘调整系数‘, u‘喜爱度‘]) new = pd.DataFrame([info], columns=[u‘设备号‘, u‘节目‘, u‘类型‘, u‘完整度‘, u‘调整系数‘, u‘喜爱度‘]) # 忽略索引,往dataframe中插入一行数据 df = df.append(new, ignore_index=True)
将数据字典添加到dataframe中
df = pd.DataFrame(columns=[u‘设备号‘, u‘节目‘, u‘类型‘, u‘完整度‘, u‘调整系数‘, u‘喜爱度‘]) new = pd.DataFrame(dict, ,index=["0"]) # 忽略索引,往dataframe中插入一行数据 df = df.append(new, ignore_index=True)
数据合并与重塑
https://blog.csdn.net/stevenkwong/article/details/52528616
2.2 删
用del删除
In [225]: del df[‘a‘] In [226]: df Out[226]: c b 0 1 1 1 2 1
In [258]: df Out[258]: c b 0 0 5 1 6 1 5 1 6 In [259]: df.drop(0,axis=1) #删除列Out[259]: c b 0 5 1 1 5 1 In [260]: df # df的数据并没有改动 Out[260]: c b 0 0 5 1 6 1 5 1 6
dorp()可以通过axis(行:axis=0 ,列:axis=1)可以控制删除行或列,默认是行。
dorp()也可以同时删除多行或多列
In [271]: df.drop([0,1],axis=1) Out[271]: c b 0 6 6 1 5 1
2.3 改
In [242]: df[‘c‘][1]=4 In [243]: df Out[243]: c b 0 1 1 1 4 1
修改列:
In [244]: df[‘c‘]=5 In [245]: df Out[245]: c b 0 5 1 1 5 1
修改行:
df[:1]=6 df Out[266]: c b 0 6 6 1 5 1
修改行和列如果传入一组值得话,注意传入数组的长度,如果传入数组长度大于len(df) 则截断,小于df长度则置NaN
In [267]: df[0]=Series([1,2,3]) In [268]: df Out[268]: c b 0 0 6 6 1 1 5 1 2 In [269]: df[1]=Series([1,]) #增加一列,传入一个值 In [270]: df Out[270]: c b 0 1 0 6 6 1 1 1 5 1 2 NaN
2.4 查
df[0:1] 选取第一行 按位置选取的 df[0] 这样是错误的的
df[‘a’] 选取第a列 按列名选取
df.loc[0] 按index选取行 df.loc[0:3]选取0,1,2行 df.loc[‘A’] 选取索引为A的行
df.loc[[‘A’],’a’] 行列一起选
df.iloc[0,2] 只能通过位置来选择,选择第一行第三列
df.iloc[0:3,1:3]通过位置切片来选择 可以选多的,也可以选中一个元素
df.at[1,’a’]通过名称来选择,只能选中一个
df.iat[1,2]通过位置来选择 只能选中一个
df.ix[1] 通过位置来选取行 df.ix[‘A’]通过索引选择行
df.ix[1,’a’] 同时选取行列,位置和索引都可以 可选中一个元素,也可以是多个
df选择后的数据基本都是dataframe结构,不能直接使用
使用df.values可以获取它的值
df.columns 输出列的信息
df.index 输出索引相关信息
df.describe() 会显示每一列的总数均值等
df.info() 显示基本的数据信息
df.count() df.mean() df.max() df.min() 统计每一列的统计量
df.head(10) 输出前10行 df.tail(10) 输出最后10行
df.isnull.sum() 按列统计表中的空值的数量
df.where(df>10).count() 按列统计 表中大于10的元素个数
df.groupby(‘y’).count() 根据y属性进行分组,统计每一组的分布情况
df[df[‘price’]<’7.2’] 把符合条件的行显示出来
df.where(df[‘price’]<’7.2’) 所有行都显示,不符合条件的price显示为nan
以上是关于pandas中DataFrame相关的主要内容,如果未能解决你的问题,请参考以下文章