Pandas——Series与DataFrame

1.Numpy 和 Pandas 的比较

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

要使用pandas,首先需要了解他主要两个数据结构:Series和DataFrame。

2.Series

import pandas as pd
import numpy as np

s = pd.Series([10,20,30,np.nan,40,np.nan])  #np.nan为NAN #Series是一个一维数组对象类似于NumPy的一维array。它除了包含一组数据还包含一组索引,所以可以把它理解为一组带索引的数组
print(s)

在这里插入图片描述

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

3.DataFrame

import pandas as pd  
import numpy as np

dates = pd.date_range('20200314', periods = 10)     #pd.date_range()-日期范围:生成日期范围
df = pd.DataFrame(np.random.randn(10,5), index = dates, columns = ['A', 'B', 'C', 'D', 'E'])   #构造10行5列的表格

print(df)

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

4.DataFrame 的简单运用

import pandas as pd  
import numpy as np

dates = pd.date_range('20200314', periods = 10)     #pd.date_range()-日期范围:生成日期范围
df = pd.DataFrame(np.random.randn(10,5), index = dates, columns = ['A', 'B', 'C', 'D', 'E'])   #构造10行5列的表格

print(df['A'])    #返回带索引的列
print(df['E'])

在这里插入图片描述
我们在创建一组没有给定行标签和列标签的数据 data_frame:

data_frame = pd.DataFrame(np.arange(20).reshape((4,5)))
print(data_frame)

在这里插入图片描述
这样,他就会采取默认的从0开始 index. 还有一种生成 df 的方法, 如下 data_frame2:

data_frame2 = pd.DataFrame({'A' : 1,
                            'B' : pd.Timestamp('20200314'),    #时间戳
                            '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(data_frame2)

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

print(data_frame2.dtypes)

在这里插入图片描述
如果想看对列的序号:

print(data_frame2.index)

在这里插入图片描述
同样, 每种数据的名称也能看到:

print(data_frame2.columns)

在这里插入图片描述
如果只想看所有data_frame2的值:

print(data_frame2.values)

在这里插入图片描述
想知道数据的总结, 可以用 describe():

print(data_frame2.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(data_frame2.T)

#输出
                     0                    1                    2  \
A                    1                    1                    1   
B  2020-03-14 00:00:00  2020-03-14 00:00:00  2020-03-14 00:00:00   
C                    1                    1                    1   
D                    3                    3                    3   
E                 test                train                 test   
F                  foo                  foo                  foo   

                     3  
A                    1  
B  2020-03-14 00:00:00  
C                    1  
D                    3  
E                train  
F   
               foo  

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

print(data_frame2.sort_index(axis = 1, ascending = False))

#输出
     F      E  D    C          B  A
0  foo   test  3  1.0 2020-03-14  1
1  foo  train  3  1.0 2020-03-14  1
2  foo   test  3  1.0 2020-03-14  1
3  foo  train  3  1.0 2020-03-14  1

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

print(data_frame2.sort_values(by = 'E'))

#输出
   A          B    C  D      E    F
0  1 2020-03-14  1.0  3   test  foo
2  1 2020-03-14  1.0  3   test  foo
1  1 2020-03-14  1.0  3  train  foo
3  1 2020-03-14  1.0  3  train  foo
发布了134 篇原创文章 · 获赞 366 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37763870/article/details/104854351