3.0:pandas【基础操作】
pandas 是基于numpy构件的强大的数据处理模块,其核心的数据结构有两个:Series 与 DataFrame
一:Series
Series 是一种类似于表的东西,拥有索引(index)与其对应的值(value)
1)创建Series:
Sereies方法接收两个参数,第一个与value相关,第二个用来指定索引。而创建的方式有两种:
一种为用两个list作为参数分别代表value和index的值[index参数不写则默认0开始自增长]
另一种为dict作为第一参数,若不写第二参数,则其key变成index,value即是value,若有第二参数,则用第二参数元素作为index.[index对应不上的则被抛弃]
import pandas as pd
obj_1 = pd.Series([1,2,3,4]) #若不指定索引则默认为从零开始的自增长 --->obj_1
0 1
1 2
2 3
3 4
dtype: int64 obj_2 = pd.Series([1,2,3,4], index=['a','b','c','d']) #指定索引 obj_2
--->a 1
b 2
c 3
d 4
dtype: int64
创建方法一
sdata = {'Ohio':3500,'Texas':7100,'Oregon':1600,'Utah':500} obj_3 = pd.Series(sdata) obj_3
--->Ohio 3500
Oregon 1600
Texas 7100
Utah 500
dtype: int64 states = ['California','Ohio','Texas'] obj_4 = pd.Series(sdata,index=states) obj_4
--->California NaN
Ohio 3500
Texas 7100 #由于states列表并没有Oregen与Utah,故无法对应起来
dtype: float64
创建方法二
2) 索引
obj_1.values #调出所有元素值
--->array([1, 2, 3, 4], dtype=int64)
obj_1.index #调出索引值
--->Int64Index([0, 1, 2, 3], dtype='int64')
#改变index值
obj_4.index = ['bob','steve','jeff'] #注:若要改变index,数量必须与原本的数量相同,不能少也不能多
obj_4
bob NaN
steve 3500
jeff 7100
dtype: float64
obj_2['a'] #利用索引进行取值
--->1
obj_2[['c','b','a']] #可以用索引一次取多个值,并且按其给定的顺序输出
--->c 3
b 2
a 1
dtype: int64
'b' in obj_2 #检验索引是否存在
--->True
二:DataFrame
一种表格型的数据结构,每列可以是不同的数值类型,且它既有行索引,还有列索引,并且他们是平衡的
1)创建DataFrame
DataFram(data[,columns = ... , index = ...])
注:若data为字典型数据,则keys自动变成columns,若data仅是列表类,columns与index都是默认0开始自增长的数
data=[['ohio','nevada','nevada'],[2000,1000,1000],[1.5,1.7,3.6]] frame_1 = pd.DataFrame(data) frame_1
0 1 2
0 ohio nevada nevada
1 2000 1000 1000
2 1.5 1.7 3.6 frame_2 = pd.DataFrame(data,columns=['first','second','third']) frame_2
first second third #注意此处结果与使用字典时比较,这里一个list定义了一行,而字典的是一列
0 ohio nevada nevada
1 2000 1000 1000
2 1.5 1.7 3.6 frame_2 = pd.DataFrame(data,columns=['first','second','third'],index=['one','two','three']) frame_2
first second third
one ohio nevada nevada
two 2000 1000 1000
three 1.5 1.7 3.6
创建方法一
data2 = {'states':['ohio','nevada','nevada'],'year':[2000,1000,1000],'pop':[1.5,1.7,3.6]} frame_4=pd.DataFrame(data2) frame_4
pop states year
0 1.5 ohio 2000
1 1.7 nevada 1000
2 3.6 nevada 1000 frame_5=pd.DataFrame(data2,index=['one','two','three']) frame_5
pop states year
one 1.5 ohio 2000
two 1.7 nevada 1000
three 3.6 nevada 1000
创建方法二
2)索引
同Series一样可以通过values与index属性查看这两个值
In [62]: frame_4
Out[62]:
pop states year
0 1.2 ohio 2000
1 2.1 new state new year
2 3.6 nevada 1000 In [63]: frame_4.index
Out[63]: Int64Index([0, 1, 2], dtype='int64') In [64]: frame_4.index.name In [65]: frame_4.index
Out[65]: Int64Index([0, 1, 2], dtype='int64') In [66]: frame_4.values
Out[66]:
array([[1.2, 'ohio', 2000L],
[2.1, 'new state', 'new year'],
[3.6, 'nevada', 1000L]], dtype=object)
index/values属性
通过对column的索引可以获取以Series的形式返回一列
In [38]: frame_4
Out[38]:
pop states year
0 1.5 ohio 2000
1 1.7 nevada 1000
2 3.6 nevada 1000 In [39]: frame_4['pop']
Out[39]:
0 1.5
1 1.7
2 3.6
Name: pop, dtype: float64
通过索引字段ix可以以Series形式返回一行的内容【实际上ix关键字可以实现两个方向上的选取,其接收两个参数,第一个取行,第二个取列,返回并集】
In [40]: frame_4.ix[1]
Out[40]:
pop 1.7
states nevada
year 1000
Name: 1, dtype: object
In [8]: frame_4.ix[1,:1]
Out[8]:
pop 1.7
Name: 1, dtype: object
3)赋值
列赋值
In [41]: frame_4['pop']=2.0 In [42]: frame_4
Out[42]:
pop states year
0 2 ohio 2000
1 2 nevada 1000
2 2 nevada 1000
行赋值
In [44]: frame_4
Out[44]:
pop states year
0 2 ohio 2000
1 hello hello hello
2 2 nevada 1000
通过Series进行赋值
In [45]: val = pd.Series([1.2,2.0,3.6],index=[0,1,2]) In [46]: frame_4['pop']=val In [47]: frame_4
Out[47]:
pop states year
0 1.2 ohio 2000
1 2.0 hello hello
2 3.6 nevada 1000
In [48]: val_2 = pd.Series([2.1,'new state','new year'],index=['pop','states','y
ear'])
In [49]: frame_4.ix[1]=val_2 In [50]: frame_4
Out[50]:
pop states year
0 1.2 ohio 2000
1 2.1 new state new year
2 3.6 nevada 1000
增与删
In [52]: frame_4['stars']=['one','two','five'] #没有则直接新建 In [53]: frame_4
Out[53]:
pop states year stars
0 1.2 ohio 2000 one
1 2.1 new state new year two
2 3.6 nevada 1000 five In [54]: del frame_4['stars'] In [55]: frame_4
Out[55]:
pop states year
0 1.2 ohio 2000
1 2.1 new state new year
2 3.6 nevada 1000
4)转置:.T [只是返回一个转置的副本,本身并不转置]
In [56]: frame_4
Out[56]:
pop states year
0 1.2 ohio 2000
1 2.1 new state new year
2 3.6 nevada 1000 In [57]: frame_4.T
Out[57]:
0 1 2
pop 1.2 2.1 3.6
states ohio new state nevada
year 2000 new year 1000
.T
3.0:pandas【基础操作】的更多相关文章
- pandas 基础操作 更新
创建一个Series,同时让pandas自动生成索引列 创建一个DataFrame数据框 查看数据 数据的简单统计 数据的排序 选择数据(类似于数据库中sql语句) 另外可以使用标签来选择 通过位置获 ...
- Axure8.0入门级基础操作到高手产品经理
宅男下载了一个Axure8.0.从来没有用过,那就从最基础的了解一下呗. 1.添加元件,选择元件设置样式(右侧对话框中)略!!!!! 2.按住ctrl键,用鼠标点选元件,可以任意旋转3.点元件上的黑圆 ...
- pandas基础操作
```python import pandas as pd import numpy as np ``` ```python s = pd.Series([1,3,6,np.nan,44,1]) s ...
- 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键
1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...
- Pandas的基础操作(一)——矩阵表的创建及其属性
Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...
- 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据
在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- Linux基于Hadoop2.8.0集群安装配置Hive2.1.1及基础操作
前言 安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可,安装前需保证Hadoop已启(动文中用到了hadoop的hdfs命 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- numpy&pandas基础
numpy基础 import numpy as np 定义array In [156]: np.ones(3) Out[156]: array([1., 1., 1.]) In [157]: np.o ...
随机推荐
- 工作流activiti-03数据查询(流程定义 流程实例 代办任务) 以及个人小练习
在做数据查询的时候通过调用api来查询数据是相当的简单 对分页也进行了封装listPage(0, 4) ;listPage:分页查询 0:表示起始位置,4:表示查询长度 但是公司的框架封装了分页数据 ...
- Secure CRT 如何连接虚拟机里面的CentOS系统——当主机使用无线网的时候 作者原创 欢迎转载
第一步:设置自己的无线网,并且分享给VM8这个虚拟网卡 第二步:查看VM8网卡的IP地址,如图是192.168.137.1 第三步:设置虚拟机的配置:选择VM8网卡并且是NAT的 第四步:设置虚拟机里 ...
- linux笔记2.24
安装vsftpd mount /dev/cdrom /mnt cp vsftpd-1.1.3-8.i386.rpm /home/soccer/ chmod 777 vsftpd-1.1.3-8.i38 ...
- PHP判断是否微新浏览器
$inwechat = false; $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($user_agent, 'MicroMessenge ...
- ionic框架,快速开发webAPP神器。
官网地址 http://www.ionicframework.com/ 这个国外框架已经很火了.会使用插件的话更好,例如支付宝支付插件,调用摄像头拍照,二维码扫描,通讯录,文件上传,推送信息等等. 最 ...
- php curl 基本用法
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com"); curl_se ...
- php设计模式2策略模式
<?php /** ****************************************************** * 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接 ...
- CentOS下建立本地YUM源并自动更新
1. 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器,主要出于以下几点考虑: l 网络速度:访问互联网可能比较慢 l 节省带宽:如果有大量的服务器,架设自己的yum源可以有 ...
- Visual Studio调试之避免单步跟踪调试模式
Visual Studio调试之避免单步跟踪调试模式 写完Visual Studio调试之断点进阶篇之后,想分享一下我常用的一些调试技巧,后面发现写之前,一些背景知识需要介绍一下. 下面是几篇今年2月 ...
- iOS开发——C篇&文件操作
今天开始C语言中的重点难点就基本上技术忘了,但是还有最后一个知识点不得不提,那就是文件操作. 我们都知道,我们每天都在使用电脑,手机,或者其他电子或者移动设备,其实我们在使用的时候每时每刻都在执行文件 ...