python数据类型之pandas—DataFrame
DataFrame定义:
DataFrame是pandas的两个主要数据结构之一,另一个是Series
—一个表格型的数据结构
—含有一组有序的列
—大致可看成共享同一个index的Series集合
DataFrame创建方式:
默认方式创建:
>>> data = {'name':['Wangdachui','Linling','Niuyun'],'pay':[4000,5000,6000]}
>>> frame = pd.DataFrame(data)
>>> frame
name pay
0 Wangdachui 4000
1 Linling 5000
2 Niuyun 6000
传入索引的方式创建:
>>> data = np.array([('Wangdachui',4000),('Linling',5000),('Niuyun',6000)])
>>> frame = pd.DataFrame(data,index = range(1,4),columns=['name','pay'])
>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
>>> frame.index
RangeIndex(start=1, stop=4, step=1)
>>> frame.columns
Index(['name', 'pay'], dtype='object')
>>> frame.values
array([['Wangdachui', ''],
['Linling', ''],
['Niuyun', '']], dtype=object)
DataFrame的基本操作:
取DataFrame对象的行和列
>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
>>> frame['name']
1 Wangdachui
2 Linling
3 Niuyun
Name: name, dtype: object
>>> frame.pay
1 4000
2 5000
3 6000
Name: pay, dtype: object
取特定的行或列
>>> frame.iloc[:2,1]#取第0,1行的第1列
1 4000
2 5000
Name: pay, dtype: object
>>> frame.iloc[:1,0]#取第0行的第0列
1 Wangdachui
Name: name, dtype: object
>>> frame.iloc[2,1]#取第2行的第1列
''
>>> frame.iloc[2]#取第2行
name Niuyun
pay 6000
Name: 3, dtype: object
DataFrame对象的修改和删除
>>> frame['name']= 'admin'
>>> frame
name pay
1 admin 4000
2 admin 5000
3 admin 6000
>>> del frame['pay']
>>> frame
name
1 admin
2 admin
3 admin
DataFrame的统计功能
找最低工资和工资大于5000的人
>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
>>> frame.pay.min()
''
>>> frame[frame.pay >= '']
name pay
2 Linling 5000
3 Niuyun 6000
案例:
已知有一个列表中存放了一组音乐数据:
music_data = [("the rolling stones","Satisfaction"),("Beatles","Let It Be"),("Guns N'Roses","Don't Cry"),("Metallica","Nothing Else Matters")],请根据这组数据创建一个如下的DataFrame:
singer song_name
1 the rolling stones Satisfaction
2 Beatles Let It Be
3 Guns N'Roses Don't Cry
4 Metallica Nothing Else Matters
方法如下:
>>> import pandas as pd
>>> music_data = [("the rolling stones","Satisfaction"),("Beatles","Let It Be"),("Guns N'Roses","Don't Cry"),("Metallica","Nothing Else Matters")]
>>> music_table = pd.DataFrame(music_data)
>>> music_table
0 1
0 the rolling stones Satisfaction
1 Beatles Let It Be
2 Guns N'Roses Don't Cry
3 Metallica Nothing Else Matters
>>> music_table.index = range(1,5)
>>> music_table.columns = ['singer','song_name']
>>> print(music_table)
singer song_name
1 the rolling stones Satisfaction
2 Beatles Let It Be
3 Guns N'Roses Don't Cry
4 Metallica Nothing Else Matters
DataFrame基本操作补充
DataFrame对象如下:
>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
(1)添加列
添加列可以直接赋值,例如给frame添加tax列:
>>> frame['tax'] = [0.05,0.05,0.1]
>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
(2)添加行
添加行可以用loc(标签)和iloc(位置)索引,也可以用append()和concat()方法,这里用loc()方法
>>> frame.loc[5] = {'name':'Liuxi','pay':5000,'tax':0.05}
>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
5 Liuxi 5000 0.05
(3)删除对象元素
删除数据可直接用“del数据”的方式进行,但这种方式是直接对原始数据操作,不安全,可利用drop()方法删除指定轴上的数据
>>> frame.drop(5)
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
>>> frame.drop('tax',axis = 1)
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
5 Liuxi 5000
此时frame没有受影响
>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
5 Liuxi 5000 0.05
(4)修改
继承上面的frame,对tax统一修改成0.03
>>> frame['tax'] = 0.03
>>> frame
name pay tax
1 Wangdachui 4000 0.03
2 Linling 5000 0.03
3 Niuyun 6000 0.03
5 Liuxi 5000 0.03
也可以直接用loc()修改
>>> frame.loc[5] = ['Liuxi',9800,0.05]
>>> frame
name pay tax
1 Wangdachui 4000 0.03
2 Linling 5000 0.03
3 Niuyun 6000 0.03
5 Liuxi 9800 0.05
python数据类型之pandas—DataFrame的更多相关文章
- [Python Study Notes]pandas.DataFrame.plot()函数绘图
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Python数据分析之pandas基本数据结构:Series、DataFrame
1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象. (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 ...
- python 数据处理学习pandas之DataFrame
请原谅没有一次写完,本文是自己学习过程中的记录,完善pandas的学习知识,对于现有网上资料的缺少和利用python进行数据分析这本书部分知识的过时,只好以记录的形势来写这篇文章.最如果后续工作定下来 ...
- Python pandas DataFrame操作
1. 从字典创建Dataframe >>> import pandas as pd >>> dict1 = {'col1':[1,2,5,7],'col2':['a ...
- 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现
首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...
- Python时间处理,datetime中的strftime/strptime+pandas.DataFrame.pivot_table(像groupby之类 的操作)
python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.s ...
- Python之如何删除pandas DataFrame的某一/几列
删除pandas DataFrame的某一/几列: 方法一:直接del DF['column-name'] 方法二:采用drop方法,有下面三种等价的表达式: 1. DF= DF.drop('co ...
- Python pandas.DataFrame调整列顺序及修改index名
1. 从字典创建DataFrame >>> import pandas >>> dict_a = {'],'mark_date':['2017-03-07','20 ...
- Python Pandas -- DataFrame
pandas.DataFrame class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) ...
随机推荐
- 用oc写爬虫之HTMLParser
最近刚好有一些小需求,就尝试用OC来写一些简单的爬虫抓取网页上的数据: 发现了一个非常好用的HTMLParser工具 ; 语法是OC的,通过分析网页结构:可以很轻松的抓取需要的数据: 但是提前需要了解 ...
- 简单JNI使用demo
android中使用JNI的小例子,直接上代码. 首先是Java类JniClient,定义native方法,User实体类就不上代码了,就简单定义了三个属性,name.age.sex. package ...
- Attempt to present <TestViewController2: 0x7fd7f8d10f30> on <ViewController: 0x7fd7f8c054c0> whose view is not in the window hierarchy!
当 storyboard里面的 按钮 即连接了 类文件里面的点击方法 又 连接了 storyboard里 另一个 控制器的 modal 就会出现类似Attempt to present & ...
- Android--保持加速度传感器在屏幕关闭后运行(收集)
由于写论文需要,需要用手机加速度采集数据,关于android加速度传感器的介绍网上一抓一大把,但大多都是大同小异,跟官网文档差不多.自己写了个取加速度传感器的APK,发现数据有点不对劲,原理屏幕一关后 ...
- C#通过DSOFile读取与修改文件的属性
搜了一圈用C#读取与修改文件属性的文章,结果几乎找不到- -: 偶然间看到一个DSOFile工具,然后找到了对该工具进行详细讲解的一篇文章:<DSOfile,一个修改windows系统文件摘要的 ...
- MySQL -- 异步I/O
linux上,innodb使用异步IO子系统(native AIO)来对数据文件页进行预读和写请求.行为受到参数innodb_use_native_aio控制.默认是开启的,且只是适用于linux平台 ...
- android listview优化:滑动时颜色错乱问题
最近android的listview写多了,也学习了各种listview的优化,列如viewHolder的使用.今天做item颜色设置时遇到一个新的问题.我这里设置“未完成”是灰色的,“已完成”是 ...
- mongodb浅析
设计特征: MongoDB 的设计目标是高性能.可扩展.易部署.易使用,存储数据非常方便.其主要功能特性如下. (1)面向集合存储,容易存储对象类型的数据.在MongoDB 中数据被分组存储在集合中, ...
- 获取应用程序根目录物理路径(Web and Windows)
这两个计划写一个小类库,需要在不同项目下任意调用.该类库需要对磁盘文件进行读写,所以就需要获取程序执行的磁盘路径,就简单的对获取磁盘路径的方法进行研究. 借助搜索引擎,我从网上搜罗来多种方法,都可以直 ...
- Swift 4迁移总结:喜忧参半,新的起点
Swift 4迁移总结:喜忧参半,新的起点 每日一篇优秀博文 这次Swift 3 到 4 的迁移代码要改动的地方比较少,花了一个下午的时间就完成了迁移.Swift 把原来 4.0 的目标从 ABI 稳 ...