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
posted @ 2017-11-19 10:46  dreampursuer  阅读(1144)  评论(0编辑  收藏  举报