之前我们了解了numpy的一些基本用法,在这里简单的介绍一下pandas的数据结构。
一、Pandas数据结构
Pandas处理有三种数据结构形式:Series,DataFrame, index。Series和DataFrame是现在常用的两种数据类型。
1. Series
Series和一维数组很像,只是它的每一个值都有一个索引,输出显示时索引在左,值在右。
pandas.Series( data, index=index, dtype, copy)
1)创建一个空的序列
import numpy as np
import pandas as pd
# 利用Series序列构造函数
# 创建一个空序列
s = pd.Series()
print(s)
"""
输出:Series([], dtype: float64)
"""
2)从ndarray创建一个序列:
如果数据是ndarray,则传递的索引必须具有相同的长度。如果没有索引被传递,那么默认情况下,索引将是 range(n) ,其中 n 是数组长度,即[0,1,2,3 ...。 范围(LEN(阵列)) - 1]。
# 使用ndarray创建一个序列
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print(s)
"""
输出:
0 a
1 b
2 c
3 d
dtype: object
"""
不给赋索引值时,默认的索引范围为1~(len(data)-1)
3)传入索引值:
# 传入索引值
data = np.array(['a','b','c','d'])
s = pd.Series(data,index=[12, 13, 14,15])
print(s)
"""
输出:
12 a
13 b
14 c
15 d
dtype: object
"""
4)从字典创建一个序列:
当所创建的索引中,未给赋值时,也即缺少元素是,用NAN填充
data = {'a':0,'b':1,'c':2.}
s= pd.Series(data, index=['b','a','c','d'])
print(s)
"""
输出:
b 1.0
a 0.0
c 2.0
d NaN
dtype: float64
"""
5)用标量创建一个序列:
# 从标量创建一个序列
s= pd.Series(5, index=['a','b','c','d'])
print(s)
"""
输出:
a 5
b 5
c 5
d 5
dtype: int64
"""
6)检索数据:
data = [1, 2, 3, 4]
s= pd.Series(data, index=['a','b','c','d'])
print(s["d"]) # 检索索引为d的数据
print(s[-3:]) # 检索后3个数据
"""
输出:
4
b 2
c 3
d 4
dtype: int64
"""
2. DataFrame
DataFrame是一个2维标签的数据结构,它的列可以存在不同的类型。你可以把它简单的想成Excel表格或SQL Table,或者是包含字典类型的Series。它是最常用的Pandas对象。和Series一样,DataFrame接受许多不同的类型输入。
pandas.DataFrame( data, index, columns, dtype)
1) 创建一个空的DataFrame
# 创建一个空的DataFrame
import pandas as pd
df = pd.DataFrame()
print(df)
"""
输出:
Empty DataFrame
Columns: []
Index: []
"""
2) 从列表中创建一个DataFrame
DateFrame可以使用单个列表或者列表列表创建
data = [1, 2, 3,4, 5]
df = pd.DataFrame(data)
print(df)
"""
输出:
0
0 1
1 2
2 3
3 4
4 5
"""
data = [['Al', 9],['Bl', 8],['Cl', 10]]
# dtype参数将Age列的类型更改为浮点型
df = pd.DataFrame(data, columns=['Name', 'Age'], dtype=float)
print(df)
"""
输出:
Name Age
0 Al 9.0
1 Bl 8.0
2 Cl 10.0
"""
3) 从ndarrys/lists的字典创建一个dataFrame
所有的 ndarrays 必须具有相同的长度。如果索引被传递,那么索引的长度应该等于数组的长度。
如果没有索引被传递,那么默认情况下,索引将是range(n),其中 n 是数组长度。
# 从ndarrays/List的Dict创建一个DataFrame
data1 = {'Name':['Al','Bl','Cl'], 'Age':[9, 8,10]}
df1 = pd.DataFrame(data1)
print(df1)
"""
输出:
Age Name
0 9 Al
1 8 Bl
2 10 Cl
"""
4) 添加行标签
data1 = {'Name':['Al','Bl','Cl'], 'Age':[9, 8,10]}
# 添加行标签
df1 = pd.DataFrame(data1, index=['rank1','rank2','rank3'])
print(df1)
"""
输出:
Age Name
rank1 9 Al
rank2 8 Bl
rank3 10 Cl
"""
5)在列表中创建一个dataframe
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['rank1','rank2'])
print(df)
"""
输出:
a b c
rank1 1 2 NaN
rank2 5 10 20.0
"""
# 使用字典,行索引,列索引列表创建DataFrame
data = [{'a':1,'b':2},{'a':2,'b':10,'c':9}]
df1 = pd.DataFrame(data, index = ['rank1','rank2'],columns=['a','b'])
print('df1:\n',df1)
df2 = pd.DataFrame(data1, index = ['rank1','rank2'],columns=['a','b1'])
print('df2:\n',df2)
"""
输出:
df1:
a b
rank1 1 2
rank2 2 10
df2:
a b1
rank1 1 NaN
rank2 2 NaN
"""
6) 从序列字典中创建一个DataFrame,并进行列添加,删除
# 从序列字典创建一个DataFrame
d = {'one':pd.Series([1,2,3], index=['a','b','c']),
'two':pd.Series([1,2,3,4], index=['a','b','c','d'])}
df = pd.DataFrame(d)
print(df)
"""
输出:
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
"""
添加列:
# 添加列
d = {'one':pd.Series([1,2,3], index=['a','b','c']),
'two':pd.Series([1,2,3,4], index=['a','b','c','d'])}
df = pd.DataFrame(d)
df['three'] = pd.Series([20,3,21], index=['a','b','d'])
df['four'] = df['one']+df['three']
print(df)
"""
输出:
one two three four
a 1.0 1 20.0 21.0
b 2.0 2 3.0 5.0
c 3.0 3 NaN NaN
d NaN 4 21.0 NaN
"""
删除列:
# 删除列
d = {'one':pd.Series([1,2,3], index=['a','b','c']),
'two':pd.Series([1,2,3,4], index=['a','b','c','d']),
'three':pd.Series([20,3,21], index=['a','b','d'])}
df = pd.DataFrame(d)
print(df)
"""
输出:
one three two
a 1.0 20.0 1
b 2.0 3.0 2
c 3.0 NaN 3
d NaN 21.0 4
"""
# 删除列
del df['one']
print(df)
"""
输出:
three two
a 20.0 1
b 3.0 2
c NaN 3
d 21.0 4
"""
7)通过字典创建dataFrame,并进行行选择,添加,删除
# 行选择, 添加,删除
d = {'one':pd.Series([1,2,3], index=['a','b','c']),
'two':pd.Series([1,2,3,4], index=['a','b','c','d'])}
df = pd.DataFrame(d)
print(df,'\n')
print(df.loc['b'],'\n')
print(df.iloc[2],'\n')
print(df[2:4])
"""
输出:
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
one 2.0
two 2.0
Name: b, dtype: float64
one 3.0
two 3.0
Name: c, dtype: float64
one two
c 3.0 3
d NaN 4
"""
添加行:
# 添加行
df = pd.DataFrame([[1,2],[3,4]], columns=['a','b'])
df2 = pd.DataFrame([[5,6],[7,8]], columns=['a','b'])
df = df.append(df2)
print(df)
"""
输出:
a b
0 1 2
1 3 4
0 5 6
1 7 8
"""
删除行:
# 删除行
df = df.drop(0)
print(df)
"""
输出:
a b
1 3 4
1 7 8
"""
精彩推荐
本文分享自 Python爬虫scrapy 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!