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':['',''],'a':['']}  #创建不等长字典序列  

In [205]: data
Out[205]: {'a': [''], 'c': ['', '']} In [206]: df=DataFrame(data)
Traceback (most recent call last):
... ValueError: arrays must all be same length # 报错,传入的数组必须等长 In [207]: data={'c':['',''],'a':['','']} #创建<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=[""])
# 忽略索引,往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['x'].value_counts() #统计某一列x中各个值出现的次数:

df[df[‘price’]<’7.2’] 把符合条件的行显示出来 
df.where(df[‘price’]<’7.2’) 所有行都显示,不符合条件的price显示为nan

3.操作相关

3.1 去除重复值

# 重复数据只取第一个值
df = df.drop_duplicates(subset=[u'企业ID'], keep='first')

3.2 转换数据类型

3.2.1 一列转换成str

# 将int转换成str
l = list(df[u'企业ID'].apply(str)

3.2.2 列表转换成字符串

enterprise_str = ''.join(enterprise_list)

3.3 连接操作

3.3.1 多列相加

data = df['A']+df['B']

3.3.2 索引左连接

# 将三个df以企业id为索引拼接起来
df = df.join(df2)
df = df.join(df3)

3.3.3 左连接

被连接的表的列必须是索引列

df1.join(df2.set_index('key'), how='left', lsuffix='_df1', rsuffix='_df2', on='keys')

一个更便捷的实现方法,不需要设置索引

df = pd.merge(df1, df2, on='action_type', how='left')

3.3.4 拼接

# 合并
df = pd.concat([data1, data2], ignore_index=True)

3.4 索引相关

3.4.1 设置索引

df = df.set_index('ID')

3.4.2 取消索引

df = df.reset_index()

3.5 条件替换

# 将小于0的值替换为0
df.loc[df['A']<0, 'A'] = 0

3.6 改变列顺序

df = df[['B','A','C']]

3.7 按某列排序

# 默认是升序
df_sort = df.sort_values(by='score', ascending=False)

3.8 写入excel

# 存入excel乱码时使用utf_8_sig
writer = pd.ExcelWriter('result.xlsx')
df1.to_excel(writer, 'sheetA', index=True, encoding="utf_8_sig")
df2.to_excel(writer, 'sheetB', index=True, encoding="utf_8_sig")

pandas中DataFrame相关的更多相关文章

  1. Pandas中DataFrame修改列名

    Pandas中DataFrame修改列名:使用 rename df = pd.read_csv('I:/Papers/consumer/codeandpaper/TmallData/result01- ...

  2. Spark与Pandas中DataFrame对比

      Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...

  3. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  4. Spark与Pandas中DataFrame对比(详细)

      Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...

  5. pandas中DataFrame对象to_csv()方法中的encoding参数

    当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...

  6. pandas中DataFrame和Series的数据去重

    在SQL语言中去重是一件相当简单的事情,面对一个表(也可以称之为DataFrame)我们对数据进行去重只需要GROUP BY 就好. select custId,applyNo from tmp.on ...

  7. pandas中DataFrame重置设置索引

    在pandas中,经常对数据进行处理 而导致数据索引顺序混乱,从而影响数据读取.插入等. 小笔总结了以下几种重置索引的方法: import pandas as pd import numpy as n ...

  8. pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)

    数据介绍 先随机生成一组数据: import pandas as pd import numpy as np state = ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'N ...

  9. pandas中DataFrame使用

    切片选择 #显示第一行数据print(df.head(1)) #显示倒数三行数据 print(df.tail(3)) loc  df.loc[row_index,col_index]  注意loc是根 ...

随机推荐

  1. jdbc之防sql注入攻击

    1.SQL注入攻击:    由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而执 ...

  2. main(int argc, char *argv[])详解

    argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     命令行后面跟的用户输入的参数,比如:     int   main(int   ar ...

  3. Illumina Fastq Q-score

    Illumina Nextseq500 Miseq HiseqXten 测序仪 Q-score均采用下面的编码格式,仅作简要介绍. Q-score Q-score 在fastq中每个序列的第4行,代表 ...

  4. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop

    no-loop 定义当前的规则是否不允许多次循环执行,默认是 false,也就是当前的规则只要满足条件,可以无限次执行.什么情况下会出现规则被多次重复执行呢?下面看一个实例: package com. ...

  5. 2017年国内已经开设机器人工程专业(080803T)高校名单

    相关资料来源于教育部公布的2014年度和2016年度普通高等院校本科专业备案或审批结果的通知: 2014年批次 http://www.moe.edu.cn/publicfiles/business/h ...

  6. asp.net viewstate 数据过大 导致错误

    当在ViewState中放入dataSet的数据量比较大的时候,当再点页面上的控件时,不会返回到后台,并且会出现如下错误: 或者是上面的12030改成500的错误. --解决方法:Viewstate绑 ...

  7. 你必须知道的495个C语言问题,学习体会一

    C语言作为一门古老的语言,其灵活性和容易出错都让人 又爱又恨,书籍<你必须知道的495个C语言问题>,使用问答的形式,告诉读者 C语言使用的各个方面的知识,包括一些冷知识等.以下,我要摘录 ...

  8. Python面对对象相关知识总结

    很有一段时间没使用python了,前两天研究微信公众号使用了下python的django服务,感觉好多知识都遗忘了,毕竟之前没有深入的实践,长期不使用就忘得快.本博的主要目的就是对Python中我认为 ...

  9. kali视频(1-5)

    第二周 kali视频(1-5) 1.kali安装 2.基本配置 vmtools安装过程. 3.安全渗透测试一般流程 4.信息搜集之GoogleHack 5.信息搜集之目标获取 1.kali安装 直接在 ...

  10. sql_自连接,181,182,196,197

    181. Employees Earning More Than Their Managers https://leetcode.com/problems/employees-earning-more ...