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
时间: 2024-11-03 14:13:57

pandas基本介绍-【老鱼学pandas】的相关文章

pandas设置值-【老鱼学pandas】

本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import numpy as np dates = pd.date_range("2017-01-08", periods=6) data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A",

pandas处理丢失数据-【老鱼学pandas】

假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd.date_range("2017-01-08", periods=6) data = pd.DataFrame(np.arange(24).reshape(6, 4), index=dates, columns=["A", "B", "C&

为何学习matplotlib-【老鱼学matplotlib】

这次老鱼开始学习matplotlib了. 在上个pandas最后一篇博文中,我们已经看到了用matplotlib进行绘图的功能,这次更加系统性地多学习一下关于matplotlib的功能. 在matlab中,其拥有非常强大的显示图表的功能. 在python中,就提供了一个类似matlab软件中的画图库matplotlib,其基本上是模仿matlab中的画图函数. 官网中介绍的显示图表的例子见:http://matplotlib.org/gallery/index.html 要使用,就必须先进行安装

matplotlib坐标轴设置-【老鱼学matplotlib】

我们可以对坐标轴进行设置,设置坐标轴的范围,设置坐标轴上的文字描述等. 基本用法 例如: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成x轴上的数据:从-3到3,总共有50个点 x = np.linspace(-1, 1, 50) # 定义一个线性方程 y1 = 2 * x + 1 # 定义一个二次方程 y2 = x ** 2 # 设置x轴的取值范围为:-1到2 plt.xlim(-1, 2)

matplotlib柱状图-【老鱼学matplotlib】

柱状图在平常的图表中是非常常用的图,本节我们来看下如何来显示柱状图. 代码为: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 柱子的数量 n = 12 # 生成X轴上的坐标位置 X = np.arange(n) # 生成Y轴上的值 Y = np.random.rand(n) plt.bar(X, Y) # 生成柱状图上的标注值 for x,y in zip(X, Y): # 在(x, y+0.01

sklearn交叉验证2-【老鱼学sklearn】

过拟合 过拟合相当于一个人只会读书,却不知如何利用知识进行变通. 相当于他把考试题目背得滚瓜烂熟,但一旦环境稍微有些变化,就死得很惨. 从图形上看,类似下图的最右图: 从数学公式上来看,这个曲线应该是阶数太高的函数,因为一般任意的曲线都能由高阶函数来拟合,它拟合得太好了,因此丧失了泛化的能力. 用Learning curve 检视过拟合 首先加载digits数据集,其包含的是手写体的数字,从0到9: # 加载数据 digits = load_digits() X = digits.data y

sklearn数据库-【老鱼学sklearn】

在做机器学习时需要有数据进行训练,幸好sklearn提供了很多已经标注好的数据集供我们进行训练. 本节就来看看sklearn提供了哪些可供训练的数据集. 这些数据位于datasets中,网址为:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets 房价数据 加载波士顿房价数据,可以用于线性回归用: sklearn.datasets.load_boston:http://scikit-learn.or

sklearn交叉验证-【老鱼学sklearn】

交叉验证(Cross validation),有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法.于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始的子集被称为训练集.而其它的子集则被称为验证集或测试集.交叉验证是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize). 我们以分类花的例子来看下: # 加载iris数据集 from sklearn.datasets import load_iris from s

tensorflow例子-【老鱼学tensorflow】

本节主要用一个例子来讲述一下基本的tensorflow用法. 在这个例子中,我们首先伪造一些线性数据点,其实这些数据中本身就隐藏了一些规律,但我们假装不知道是什么规律,然后想通过神经网络来揭示这个规律. 伪造数据 import numpy as np # 创建100个随机数 x_data = np.random.rand(100).astype(np.float32) # 创建最终要模拟的线性公式 y_data = x_data * 0.1 + 0.3 创建模型 在伪造数据之后,我们当作不知道这