Pandas---pandas的数据结构

pandas的数据结构

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

Series

series的结构是 左边索引—右边数据
在这里插入图片描述

怎么构建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 它是一种数据结构,既有行索引也有列索引。数据是以二维结构存放的。
在这里插入图片描述

怎么创建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

猜你喜欢

转载自blog.csdn.net/qq_40637313/article/details/89082235