Pandas---pandas的数据结构
程序员文章站
2022-03-12 17:45:37
...
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
上一篇: 电商运营经验贴:从用户拉新 商品选择入手
下一篇: 本地元素修改上传拿shell的3种方法