pandas的基本原则:数据的绑定,即数据和标签绑定;通常在数据分析中将一列数据看作一组特征,特征(pandas中的列索引)和对应的数据之间相互绑定。
Serie是带有标签的一维数组,可以保存任何数据类型。
import pandas as pd
s = pd.Series(data, index=index,index=index,name=name)
data:可以是字典,列表、元组(集合set无序不能用来创建Series)
还可以是ndaary对象或者标量值
index:Series的索引,以序列的方式传值
import pandas as pd
a = [1, 2, 3, 4]
b = (1, 2, 3, 4)
c = {'a': 1, 'b': 2, 'c': 3}
d = {1, 2, 3, 4}
s1=pd.Series(a, name='list')
s2=pd.Series(b,index=('a', 'b', 'c', 'd'), name='tuple')
s3=pd.Series(c)
s4=pd.Series(c, index=['a', 'b', 'c'], name='dict')
print('用列表创建,传入name:', '\n', s1,
'用元组创建,传入index和name', '\n', s2,
'用字典创建,不传入其他值', '\n', s3,
'用字典创建,传入index和name', '\n', s4)
运行结果:
用列表创建,传入name:
0 1
1 2
2 3
3 4
Name: list, dtype: int64 用元组创建,传入index和name
a 1
b 2
c 3
d 4
Name: tuple, dtype: int64 用字典创建,不传入其他值
a 1
b 2
c 3
dtype: int64 用字典创建,传入index和name
a 1
b 2
c 3
Name: dict, dtype: int64
访问不存在的会报错
#3.1通过点访问
print('通过点访问属性:', s2.a)
通过点访问属性: 1
#3.1通过点赋值
s2.a = 'new_num'
print('通过点赋值:', s2.a)
通过点赋值: new_num
访问不存在的会报错
#3.2通过索引访问
b=[1,2,3,4]
s2 = pd.Series(b, index=('a', 'b', 'c', 'd'), name='tuple')
print('通过点访问属性:', s2['a'])
通过索引问属性: 1
#3.2通过索引赋值
b = [1,2,3,4]
s2 = pd.Series(b, index=('a', 'b', 'c', 'd'), name='tuple')
s2['a']='new_num'
print('通过点访问属性:', s2['a'])
通过索引赋值: new_num
访问不存在的会返回None或者设置的默认值
#3.2通过get()访问
b = [1,2,3,4]
s2 = pd.Series(b, index=('a', 'b', 'c', 'd'), name='tuple')
print('通过get()访问属性:', s2.get('a'))
print('通过get(访问不存在的属性,设置默认值10:', s2.get('f',dfault=10))
通过get()访问属性: 1
通过get(访问不存在的属性,设置默认值10: 10
#3.2通过索引赋值
c = {'a': 1, 'b': 2, 'c': 3}
s2 = pd.Series(b, index=('a', 'b', 'c', 'd'), name='tuple')
s2['a']='new_num'
print('通过点访问属性:', s2['a'])
通过索引赋值: new_num
import pandas as pd
a = [1, 2, 3, 4]
b = (5, 6, 7, 8)
s0 = pd.Series(a, index=['a', 'b', 'c', 'd'])
s1 = pd.Series(b, index=['a', 'b', 'c', 'd'])
print(s0,s1)
s0,s1
s0+s1
a 6
b 8
c 10
d 12
dtype: int64
s0-s1
a -4
b -4
c -4
d -4
dtype: int64
s0*s1
a 5
b 12
c 21
d 32
dtype: int64
s0/s1
a 5.000000
b 3.000000
c 2.333333
d 2.000000
dtype: float64
Series再进行运算是,会寻找对应的索引,对索引相同的元素进行运算,索引不同的返回NAN
import pandas as pd
a = [1, 2, 3, 4]
b = (5, 6, 7, 8)
s0 = pd.Series(a, index=['a', 'b', 'c', 'd'])
s1 = pd.Series(b, index=['b', 'c', 'd', 'e'])
print(s0)
print(s1)
print('s0+s1:',s1+s0)
a 1
b 2
c 3
d 4
dtype: int64
b 5
c 6
d 7
e 8
dtype: int64
s0+s1:
a NaN
b 7.0
c 9.0
d 11.0
e NaN
dtype: float64
DataFrame是带有标签的二维数据结构,(通常每列代表一个特征,每行代表一个样本)。
你可以把它想象成一个电子表格或SQL表,或者 Series 对象的字典。
DataFrame的一行或者一列都是一个Series
pd.DataFrame(d, index=None, columns=None)
data的类型:
一维数组,列表,字典或 Series 的字典
二维 numpy.ndarray
结构化或记录 ndarray
Series
另一个DataFrame
index(行标签)和columns(列标签)