欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pandas---pandas的数据结构

程序员文章站 2022-03-12 17:45:37
...

pandas的数据结构

这里我们主要需要了解的是pandas的两种数据结构,Series和DataFrame

Series

series的结构是 左边索引—右边数据
Pandas---pandas的数据结构

怎么构建series呢???

import pandas as pd

arr = pd.Series(range(10))  #使用list构建Series
print(arr.head(3))
print(arr)
print(type(arr))

结果:

0    0
1    1
2    2
dtype: int64
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64
<class 'pandas.core.series.Series'>

如何获取数据和索引

import pandas as pd

arr = pd.Series(range(10))
print(arr)

print(arr.values)    #采用values属性获取值
print(arr.index)     #采用index属性获取索引

print(arr[0])   #通过索引来获取值
print(arr[9])   #通过索引来获取值

结果:

0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64
[0 1 2 3 4 5 6 7 8 9]
RangeIndex(start=0, stop=10, step=1)
0
9

索引和数据的对应关系不被运算结果影响

import pandas as pd

arr = pd.Series(range(10))
print(arr)

print(arr*2)
print(arr > 10)

结果:

0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64
0     0
1     2
2     4
3     6
4     8
5    10
6    12
7    14
8    16
9    18
dtype: int64
0    False
1    False
2    False
3    False
4    False
5    False
6    False
7    False
8    False
9    False
dtype: bool

通过dict构建Series

import pandas as pd

year_data = {2001:17.8,2002:18.8,2003:19.8}
arr = pd.Series(year_data)
print(arr)
print(arr.index)  #取出索引
print(arr.values) #取出值
print("*"*100)
arr.name = 'value_name'
arr.index.name = 'index_name'
print(arr)

结果:

2001    17.8
2002    18.8
2003    19.8
dtype: float64
Int64Index([2001, 2002, 2003], dtype='int64')
[17.8 18.8 19.8]
****************************************************************************************************
index_name
2001    17.8
2002    18.8
2003    19.8
Name: value_name, dtype: float64

-------------------------------------------------------------------------

DataFrame

DataFrame 它是一种数据结构,既有行索引也有列索引。数据是以二维结构存放的。
Pandas---pandas的数据结构

怎么创建DataFrame呢?

可以通过ndarray构建DataFrame

import numpy as np
import pandas as pd

arr = np.array(range(10)).reshape(2,5)
#arr = np.random.randn(5,4)
print(arr)
print(pd.DataFrame(arr))

结果:

[[0 1 2 3 4]
 [5 6 7 8 9]]
   0  1  2  3  4
0  0  1  2  3  4
1  5  6  7  8  9

还可以通过dict来构建DataFrame

dict_data = {'A':1,
             'B':pd.Timestamp('20190408'),
             'C':np.array([3]*4,dtype='int32'),
             'D':pd.Series(1,index=list(range(4)),dtype='float32'),
             'E':['Python','Java','C++','C'],
             'F':'ISOK'}
print(pd.DataFrame(dict_data))

结果:

   A          B  C    D       E     F
0  1 2019-04-08  3  1.0  Python  ISOK
1  1 2019-04-08  3  1.0    Java  ISOK
2  1 2019-04-08  3  1.0     C++  ISOK
3  1 2019-04-08  3  1.0       C  ISOK

通过列索引来获取列数据(Series类型)

dict_data = {'A':1,
             'B':pd.Timestamp('20190408'),
             'C':np.array([3]*4,dtype='int32'),
             'D':pd.Series(1,index=list(range(4)),dtype='float32'),
             'E':['Python','Java','C++','C'],
             'F':'ISOK'}
print(pd.DataFrame(dict_data))
print(dict_data['E'])
print(type(dict_data['A']))

结果:

   A          B  C    D       E     F
0  1 2019-04-08  3  1.0  Python  ISOK
1  1 2019-04-08  3  1.0    Java  ISOK
2  1 2019-04-08  3  1.0     C++  ISOK
3  1 2019-04-08  3  1.0       C  ISOK
['Python', 'Java', 'C++', 'C']
<class 'int'>

增加列数据

# 增加列
df_obj2['G'] = df_obj2['D'] + 4
print(df_obj2.head())

结果:

     A          B    C  D       E       F  G
0  1.0 2017-01-02  1.0  3  Python  ITCast  7
1  1.0 2017-01-02  1.0  3    Java  ITCast  7
2  1.0 2017-01-02  1.0  3     C++  ITCast  7
3  1.0 2017-01-02  1.0  3       C  ITCast  7

删除列

删除列
dict_data = pd.DataFrame(dict_data)
del(dict_data['A'])    #此处删除了A列
print(dict_data)

结果:

           B  C    D       E     F
0 2019-04-08  3  1.0  Python  ISOK
1 2019-04-08  3  1.0    Java  ISOK
2 2019-04-08  3  1.0     C++  ISOK
3 2019-04-08  3  1.0       C  ISOK