Python数据处理之(十)Pandas 基本介绍

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/PoGeN1/article/details/84311545

一、Numpy 和 Pandas 有什么不同

如果用 python 的列表和字典来作比较, 那么可以说 Numpy 是列表形式的,没有数值标签,而 Pandas 就是字典形式。Pandas是基于Numpy构建的,让Numpy为中心的应用变得更加简单。

要使用pandas,首先需要了解他主要两个数据结构:SeriesDataFrame

二、Series

>>> import pandas as pd
>>> import numpy as np
>>> s=pd.Series([1,3,6,np.nan,44,1])
>>> print(s)
0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64

Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引。于是会自动创建一个0N-1N为长度)的整数型索引。

三、DataFrame

在这里插入代码片

四、DataFrame的一些简单应用

>>> dates=pd.date_range('20181120',periods=6)
>>> print(dates)
DatetimeIndex(['2018-11-20', '2018-11-21', '2018-11-22', '2018-11-23',
               '2018-11-24', '2018-11-25'],
              dtype='datetime64[ns]', freq='D')
>>> df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
>>> print(df)
                   a         b         c         d
2018-11-20  1.110778  1.788520  0.356670  0.507927
2018-11-21  2.082814 -0.465353  2.496047  1.146531
2018-11-22  2.456575  0.444252  0.723751 -1.513549
2018-11-23  0.398651 -0.352025 -0.727106  0.396843
2018-11-24 -0.618329  0.882563  0.716917  0.615774
2018-11-25  1.096260 -0.478230  0.076957  0.135207
>>> 

DataFrame是一个表格型的数据结构,它包含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。DataFrame既有行索引也有列索引, 它可以被看做由Series组成的大字典。

我们可以根据每一个不同的索引来挑选数据, 比如挑选 b 的元素:

五、DataFrame 的一些简单运用

>>> print(df['b'])
2018-11-20    1.788520
2018-11-21   -0.465353
2018-11-22    0.444252
2018-11-23   -0.352025
2018-11-24    0.882563
2018-11-25   -0.478230
Freq: D, Name: b, dtype: float64

我们再创建一组没有给定行标签和列标签的数据 df1:

>>> df1=pd.DataFrame(np.arange(12).reshape((3,4)))
>>> print(df1)
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

这样,他就会采取默认的从0开始 index. 还有一种生成 df 的方法, 如下 df2:

>>> df2 = pd.DataFrame({'A' : 1.,
                    'B' : pd.Timestamp('20130102'),
                    'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
                    'D' : np.array([3] * 4,dtype='int32'),
                    'E' : pd.Categorical(["test","train","test","train"]),
                    'F' : 'foo'})
>>> print(df2)
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

这种方法能对每一列的数据进行特殊对待. 如果想要查看数据中的类型, 我们可以用 dtype 这个属性:

>>> print(df2.dtypes)
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object

如果想看对列的序号:

>>> print(df2.index)
Int64Index([0, 1, 2, 3], dtype='int64')

同样, 每种数据的名称也能看到:

>>> print(df2.columns)
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

如果只想看所有df2的值:

>>> print(df2.values)
[[1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo']]

想知道数据的总结, 可以用 describe():

>>> df2.describe()
         A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0

如果想翻转数据, transpose:

>>> print(df2.T)
                     0                    1                    2                    3
A                    1                    1                    1                    1
B  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00
C                    1                    1                    1                    1
D                    3                    3                    3                    3
E                 test                train                 test                train
F                  foo                  foo                  foo      

如果想对数据的 index 进行排序并输出:

>>> print(df2.sort_index(axis=1,ascending=False))
     F      E  D    C          B    A
0  foo   test  3  1.0 2013-01-02  1.0
1  foo  train  3  1.0 2013-01-02  1.0
2  foo   test  3  1.0 2013-01-02  1.0
3  foo  train  3  1.0 2013-01-02  1.0

如果是对数据 值 排序输出:

>>> print(df2.sort_values(by='B'))
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

猜你喜欢

转载自blog.csdn.net/PoGeN1/article/details/84311545