pandas基本介绍-【老鱼学pandas】
前面我们学习了numpy,现在我们来学习一下pandas。
Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头、数据序列号以及实际的数据,而numpy就仅仅包含了实际的数据。
安装
直接输入:
pip3 install pandas
最基本用法
import pandas as pd
s = pd.Series([1, 2, 5, 6])
print(s)
输出:
0 1
1 2
2 5
3 6
dtype: int64
我们可以看到pandas自动添加了数据的序列号。
自定义索引项和列名
import pandas as pd
import numpy as np
# 创建一个日期索引项
dates = pd.date_range("2017-01-04", periods=6)
print("dates=", dates)
# 创建一个类似excel表格一样的数据表,其中索引项为日期索引,列名为:a,b,c,d
data = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=["a", "b", "c", "d"])
print("data=")
print(data)
输出:
dates= DatetimeIndex(['2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07',
'2017-01-08', '2017-01-09'],
dtype='datetime64[ns]', freq='D')
data=
a b c d
2017-01-04 0.637641 0.756613 0.297506 0.692492
2017-01-05 0.319457 0.401690 0.550955 0.862642
2017-01-06 0.685646 0.007546 0.376774 0.735220
2017-01-07 0.767868 0.000718 0.799336 0.428242
2017-01-08 0.004777 0.292726 0.227704 0.117925
2017-01-09 0.946817 0.153245 0.154102 0.165621
看,输出了一个比较规整的电子表格。
上面这些命令包括需要哪些参数不需要特别记忆,如果你用idea的话会自动给你提示的。

默认索引号和列名
如果我们没有指定索引号和列名,pandas会自动以0,1,2这样的自然数来定义我们的索引号和列名,例如:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.rand(6, 4))
print("data=")
print(data)
输出:
data=
0 1 2 3
0 0.515289 0.900554 0.490999 0.941186
1 0.706116 0.267078 0.870968 0.904068
2 0.002414 0.648418 0.579449 0.827671
3 0.473538 0.640514 0.564209 0.040902
4 0.052849 0.372015 0.613814 0.516763
5 0.484220 0.479558 0.007722 0.216598
map方式创建DataFrame
可以用一个map方式来创建DataFrame,这样相当于map中的key为列名,value为此列的数据列表:
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print("data=")
print(data)
输出为:
data=
A B C D
0 1 test dog 12
1 2 train dog 12
2 3 go dog 12
3 5 java dog 12
查看每列的数据类型
我想知道pandas中每列的数据类型,有点像了解数据库中表的字段类型,这可以通过dtypes属性获得:
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print(data.dtypes)
输出:
A int32
B object
C object
D int64
dtype: object
获得列名和索引
想要获得pandas中的列名和索引,只要使用columns和index属性就可以:
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print("列名:", data.columns)
print("索引:", data.index)
输出:
列名: Index(['A', 'B', 'C', 'D'], dtype='object')
索引: RangeIndex(start=0, stop=4, step=1)
使用describe()函数对数据快速统计汇总
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print(data.describe())
输出:
A D
count 4.000000 4.0
mean 2.750000 12.0
std 1.707825 0.0
min 1.000000 12.0
25% 1.750000 12.0
50% 2.500000 12.0
75% 3.500000 12.0
max 5.000000 12.0
其中就对可计算的列进行计数、求平均值、方差、最小值、最大值等。
pandas转置
相当于把电子表格中的行和列翻转一下。
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print(data.T)
输出:
0 1 2 3
A 1 2 3 5
B test train go java
C dog dog dog dog
D 12 12 12 12
这样索引项就变成了原先数据集中的列名。
排序
sort_index()可以按照索引项进行排序。
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
# 按照索引项进行倒排
print("按照索引项进行倒排:")
print(data.sort_index(ascending=False))
# 对列名进行倒排
print("对列名进行倒排:")
print(data.sort_index(axis=1, ascending=False))
输出:
按照索引项进行倒排:
A B C D
3 5 java dog 12
2 3 go dog 12
1 2 train dog 12
0 1 test dog 12
对列名进行倒排:
D C B A
0 12 dog test 1
1 12 dog train 2
2 12 dog go 3
3 12 dog java 5
排序中的数据会跟着列或索引项进行调换顺序,因此数据不会错乱。
按照值排序
使用sort_values()函数对值进行排序,其中可以指定按照哪一列的数据进行排序的:
import pandas as pd
import numpy as np
data = pd.DataFrame({
"A": np.array([1, 2, 3, 5]),
"B": ["test", "train", "go", "java"],
"C": "dog",
"D": 12
})
print(data.sort_values(by='B'))
输出:
A B C D
2 3 go dog 12
3 5 java dog 12
0 1 test dog 12
1 2 train dog 12
pandas基本介绍-【老鱼学pandas】的更多相关文章
- pandas合并merge-【老鱼学pandas】
本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...
- pandas画图-【老鱼学pandas】
本节主要讲述如何把pandas中的数据用图表的方式显示在屏幕上,有点类似在excel中显示图表. 安装matplotlib 为了能够显示图表,首先需要安装matplotlib库,安装方法如下: pip ...
- pandas选择数据-【老鱼学pandas】
选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...
- pandas设置值-【老鱼学pandas】
本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import ...
- pandas处理丢失数据-【老鱼学pandas】
假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...
- pandas导入导出数据-【老鱼学pandas】
pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...
- pandas合并数据集-【老鱼学pandas】
有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...
- 二分类问题续 - 【老鱼学tensorflow2】
前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=51 ...
- tensorflow卷积神经网络-【老鱼学tensorflow】
前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...
随机推荐
- 逆波兰表达式(RPN)算法简单实现
算法分析: 一.预处理 给定任意四则运算的字符串表达式(中缀表达式),preDeal预先转化为对应的字符串数组,其目的在于将操作数和运算符分离. 例如给定四则运算内的中缀表达式: String inf ...
- Unity编辑器下重启
我们项目AssetBundle打包走的是全自动化流程,打包之前要进行各种资源检测,如果检测顺利通过,则进入打包,否则提示错误资源名称及路径,打包中断!有时候即使资源检测通过也会打包崩溃,初步断定是Un ...
- NSTimer的问题
iOS开发中,涉及到定时的问题,我们通常使用NSTimer来解决,例如下面的代码. SFClass.h #import <Foundation/Foundation.h> @interfa ...
- WAMPServer配置修改及问题汇总
备忘录 软件版本wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b -------------------------------------- ...
- 在 JPA、Hibernate 和 Spring 中配置 Ehcache 缓存
jpa, hibernate 和 spring 时配置 ehcache 二级缓存的步骤. 缓存配置 首先在 persistence.xml 配置文件中添加下面内容: <property name ...
- [ACdream] 女神教你字符串——三个气球
Problem Description 女神邀请众ACdream开联欢会,显然作为ACM的佼佼者,气球是不能少的~.女神准备了三种颜色的气球,红色,黄色,绿色(交通信号灯?) 有气球还不能满足女神,女 ...
- .Net Core程序的部署(FDD与SCD)
最近打算做一个公司的代码走查工具,思前想后觉得正好可以当作一个Core的实践机会,于是上官网看了下资料,顺便作了一下笔记方便以后查阅. 注1:这里的Core程序部署指的是.Net Core而非Asp. ...
- Mybatis基本用法--上
Mybatis基本用法--上 本文只是为自己查漏补缺.全面的请看官方文档,支持中英文 原理参考:http://blog.csdn.net/luanlouis/article/details/40422 ...
- Java基础-数组(06)
数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致 数组概念 数组是存储同一种数据类型多个元素的容器.数组既可以存储基本数据类型,也可以存储引用数据类型. 数组的定义格式 格式1:数 ...
- iOS下OpenCV开发用OC还是Swift
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实标题中这个问题并不准确,准确的说法应该是iOS下的OpenCV开发是使用OC还是Swift ...