pandas基本介绍-【老鱼学pandas】



前面我们学习了numpy,现在我们来学习一下pandas。PYTHON Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头、数据序列号以及实际的数据,而numpy就仅仅包含了实际的数据。

安装

直接输入:



  PYTHON">PYTHON">pip3 install pandas

 

最基本用法



  PYTHON">PYTHON">import pandas as pd

s = pd.Series([1, 2, 5, 6])

print(s)

 

输出:



  PYTHON">PYTHON">0    1

1    2

2    5

3    6

dtype: int64

 

我们可以看到pandas自动添加了数据的序列号。

自定义索引项和列名



  PYTHON">PYTHON">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)

 

输出:



  PYTHON">PYTHON">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这样的自然数来定义我们的索引号和列名,例如:



  PYTHON">PYTHON">import pandas as pd

import numpy as np

data = pd.DataFrame(np.random.rand(6, 4))

print("data=")

print(data)

 

输出:



  PYTHON">PYTHON">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为此列的数据列表:



  PYTHON">PYTHON">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)

 

输出为:



  PYTHON">PYTHON">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属性获得:



  PYTHON">PYTHON">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)

 

输出:



  PYTHON">PYTHON">A     int32

B    object

C    object

D     int64

dtype: object

 

获得列名和索引

想要获得pandas中的列名和索引,只要使用columns和index属性就可以:



  PYTHON">PYTHON">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)

 

输出:



  PYTHON">PYTHON">列名: Index(['A', 'B', 'C', 'D'], dtype='object')

索引: RangeIndex(start=0, stop=4, step=1)

 

使用describe()函数对数据快速统计汇总



  PYTHON">PYTHON">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())

 

输出:



  PYTHON">PYTHON">              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转置

相当于把电子表格中的行和列翻转一下。



  PYTHON">PYTHON">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)

 

输出:



  PYTHON">PYTHON">      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()可以按照索引项进行排序。



  PYTHON">PYTHON">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))

 

输出:



  PYTHON">PYTHON">按照索引项进行倒排:

   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()函数对值进行排序,其中可以指定按照哪一列的数据进行排序的:



  PYTHON">PYTHON">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'))

 

输出:



  PYTHON">PYTHON">   A      B    C   D

2  3     GO  dog  12

3  5   JAVA  dog  12

0  1   test  dog  12

1  2  train  dog  12

 

猜你喜欢

转载自right-left.iteye.com/blog/2406711
今日推荐