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  

用drop() 删除

用drop删除时,删的是视图,并没有真正删除

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

原文地址:https://www.cnblogs.com/lzhc/p/9196839.html

时间: 2024-10-07 23:16:33

pandas中DataFrame相关的相关文章

pandas中DataFrame

python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数据及属性 df_obj = DataFrame() #创建DataFrame对象 df_obj.dtypes #查看各行的数据格式 df_obj['列名'].astype(int)#转换某列的数据类型 df_obj.head() #查看前几行的数据,默认前5行 df_obj.tail() #查看后几

Pandas中DataFrame数据合并、连接(concat、merge、join)之merge

二.merge:通过键拼接列 类似于关系型数据库的连接方式,可以根据一个或多个键将不同的DatFrame连接起来. 该函数的典型应用场景是,针对同一个主键存在两张不同字段的表,根据主键整合到一张表里面. merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=Tr

pandas中DataFrame类的pivot_table函数------Reshaping by pivoting DataFrame objects

以下内容为截取自pandas官网的doc(请看这里),我做了一些翻译. Reshaping by pivoting DataFrame objects Data is often stored in CSV files or databases in so-called “stacked” or “record” format: In [1]: df Out[1]: date variable value 0 2000-01-03 A 0.469112 1 2000-01-04 A -0.282

pandas中DataFrame逐行读取的方法

1 2 3 4 5 6 import pandas as pd dict=[[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8],[4,5,6,7,8,9],[5,6,7,8,9,10]] data=pd.DataFrame(dict) print(data) for indexs in data.index: print(data.loc[indexs].values[0:-1]) 实验结果: 0 1 2 3 4 5 0 1 2 3 4 5 6 1 2 3 4 5

Pandas中DataFrame数据合并、连接(concat、merge、join)之concat

一.concat:沿着一条轴,将多个对象堆叠到一起 concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True): objs:需要连接的对象集合,一般是列表或字典: axis:连接轴向: join:参数为'outer'或'inner': join_axes=[]:指定自定义的索

Pandas中DataFrame数据合并、连接(concat、merge、join)之join

pandas.DataFrame.join 自己弄了很久,一看官网.感觉自己宛如智障.不要脸了,直接抄 DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False) Join columns with other DataFrame either on index or on a key column. Efficiently Join multiple DataFrame objects by in

压缩pandas中dataframe内存

从这里找的一个宝贝源码,可以大大缓解内存问题.https://www.kaggle.com/arjanso/reducing-dataframe-memory-size-by-65/code # @from: https://www.kaggle.com/arjanso/reducing-dataframe-memory-size-by-65/code # @liscense: Apache 2.0 # @author: weijian def reduce_mem_usage(props):

解决问题:使用pandas中DataFrame如何使用条件选择某行

初始化 data = {'db':['my','my','my','dm','dm','dm'],'table':['s','cs','c','book','order','cus']} >>> data = DataFrame(data) >>> data db table 0 my s 1 my cs 2 my c 3 dm book 4 dm order 5 dm cus 如果我想选择出‘db’ == ‘my’ 的所有行,操作如下: data.loc[data['

pandas中选取某行为缺失值的数据,并返回

1.df.dropna() 可以返回去掉NaN的df结果集. 2.pandas中dataframe取差集: df=pd.DataFrame({"name":[1,2,3,np.NaN,8],"value":[3,4,np.NaN,9,0]}) drop_na_df=df.dropna() na_symbols_df=pd.DataFrame(list(set(df["name"])^set(drop_na_df["name"]