专栏首页日常撸知识python pandas 基础之一

python pandas 基础之一

pandas的两大数据结构:Series和DataFrame. Series用于储存一个序列一样的一维数据;DataFrame用于多维数据。

一. Series: 跟数组numpy类似,多了一些额外的功能。主数组的每个元素都有一个与之相关的标签,存储在Index里。

import pandas as pd

import numpy as np

s=pd.Series([12,2,3,4])

声明Series时,若不指定标签,默认从0开始。也可以指定标签。

s=pd.Series([12,3,4,5],index=['a','b','b','d'])

a=np.array([1,2,4,5])

b=pd.Series(a)

查看index和values:

s.index

s.values

元素引用:s[2], s['c'], s[0:3], s[['b','c']]

元素赋值:s[0]=3, s[3]=5, s['c']='abc'

筛选元素:

s[s>3],

数学运算:

s/2, s*3, s+2, np.log(s)

去重unique():

s.unique(),返回一个去重后的元素。

value_counts(), 返回各个不同的元素,并计算元素在Series中的个数。

isin(), 用来判断所属关系,判断给定的一列元素是否包含在Series数据结构中。isin()返回布尔值。

s.isin([1,3])

NaN: 数据结构中如果字段为空或者不符合数字的定义时,用NaN表示。

s=pd.Series([1,2,3,4,np.NaN,5])

isnull()和notnull()用来判断NaN元素,返回布尔值。在通过布尔值可以取出不为空的值或者空值。

s[s.notnull()或者s[s.isnull()]

将字典转化为Series数据结构:

ding={'name':'ding','age':23,'location':'CD'}

s=pd.Series(ding)

将列表作为index传给Series

colors=['red','green','blue','yellow']

s=pd.Series(ding, index=colors)

Series对象之间的运算:只对index标签相同的元素进行运算得到一个新的Series对象。它能够通过标签对齐,其中标签不一致的值为NaN

二. pandas: 数据结构跟excel类似,类似于将Series使用场景应用的多维。各列的数据结构可以是不同类型的。

定义方法:通常通过传递一个dict字典对象来构造。

data={('colors':[],'object':[],'price':[])}

frame=pd.DataFrame(data)

也可以只选取data中的部分数据来构造DataFrame()

frame=pd.DataFrame(data, columns=['object','price'])

如果没有指定index标签,会自动从0开始,指定标签。也可以指定特定的标签.

frame=pa.DataFrame(data, index=['one','two', 'three','four'])

选取元素:

选取所有列的名称:frame.columns

获取索引的列表:frame.index

获取所有的元素:frame.values

获取一列,用列名称即可:frame['price'],返回一个Series对象

另一种获取列的方法:frame.price

获取一行的数据:frame.ix[3]

获取多行:frame.ix[[1,2,5]]

获取多行:frame.in[0:5]

获取某一个元素,需要指定列名称和行名称:frame['price'][4]

赋值:

用name属性为index和columns指定名字

frame.index.name='id'

frame.columns.name='item'

添加一列:

frame['new']=12

frame['new']=[23,45,67]

修改某一列的值类似。

用Series给某一列赋值:

ser=pd.Series(np.arange(4))

frame['new']=ser

isin()原属所属关系,和Series方法类似:

frame.isin([1,'pen'])

返回布尔值。

frame(frame.isin([1,'pen']))得到一个新的DataFrame,包含满足条件的值,其他值为NaN.

删除一列:

del frame['new']

筛选:

frame[frame>4],大于4的值返回,其他值为空。

转置:frame.T

用嵌套字典生成DataFrame对象,pandas会将外部的键当作列名称,将内部的键当作index索引。

book={‘red’:{2000:22,34,56},'blue':{2012:23,45,12},'white':{2034:123,345,567}}

本文分享自微信公众号 - 小末快跑(Faster_Future),作者:小末快跑

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 统计学之假设检验

    P-值规则:先把显著性水平α值转化为一定分布下的临界值,然后在计算检验统计值,最后把检验统计值与临界值相互比较来判断是否拒绝原假设。在双侧检验时,α平分在两侧,...

    小末快跑
  • MySQL子查询,联结表

    子查询:嵌套在其他查询中;执行顺序由里到外。子查询数目没有限制,如果要使用多层查询,注意写好缩进格式,不要出错。

    小末快跑
  • MySQL基础之常规检索

    SELECT * FROM products;该语句检索出products表中所有的列。

    小末快跑
  • 《Springboot极简教程》 Springboot plus Kotlin :Hello,WorldKotlin, Console: Hello,WorldSpringBoot Kotlin JP

    https://github.com/MiniSpringBootTutorial/mini_springboot/blob/master/src/main/k...

    一个会写诗的程序员
  • Qt学习笔记 TableWidget使用说明和增删改操作的实现

    看一下效果很简单的一个小功能 ? 先说分部讲一下过程 再给出详细代码  添加数据 MainWindow::MainWindow(QWidget *parent)...

    lpxxn
  • [C-C++]获取系统时间

    不过当计算算法耗时的时候,不要忘记second,不能只要用Milliseconds来减,不然后出现负值,若是算法耗时太长就得用minutes啦。再不然,就hou...

    祥知道
  • java开发五年,你必须要知道这几点!

    做了5年左右Java开发,你已经积累了不少项目经验,扩宽了技术广度,也许已发力成为团队管理者。到了这个阶段,大家却常有这种感受:感觉自己卡在瓶颈进步缓慢,技术水...

    Java搬砖工人
  • 《Java从入门到失业》第二章:Java环境(2.2):JDK、JRE、JVM

      在JDK的安装目录中,我们发现有一个目录jre(其实如果是下一步下一步安装的,在和JDK安装目录同级目录下,还会有一个jre目录)。初学Java的同学,有时...

    用户7801119
  • [喵咪开源软件推荐(4)]Liunx跑分神器-unixbench

    [喵咪开源软件推荐(4)]Liunx跑分神器-unixbench #w-blog博客 ? 哈喽大家好呀! 这次给大家带来一个Liunx跑分神奇,在笔者在老早之前...

    喵了个咪233
  • 简单实用靠谱的安卓专项测试工具

    对于fps的获取,Android 6.0以下系统需要进入系统设置-GPU呈现模式分析,选中在adb shell dumpsys gfxinfo 中

    厦门-安仔

扫码关注云+社区

领取腾讯云代金券