一,pandas的结构

pandas的基本原则:数据的绑定,即数据和标签绑定;通常在数据分析中将一列数据看作一组特征,特征(pandas中的列索引)和对应的数据之间相互绑定。

1,pandas的组成单位:Series ,

Serie是带有标签的一维数组,可以保存任何数据类型。

1.1Seise的创建:

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

1.2、Series 可以用来切片,方法同python的序列

1.3、series的属性访问

1.3.1通过点访问和赋值

访问不存在的会报错

#3.1通过点访问
print('通过点访问属性:', s2.a)
通过点访问属性: 1
#3.1通过点赋值
s2.a = 'new_num'
print('通过点赋值:', s2.a)
通过点赋值: new_num
1.3.2通过索引访问和赋值

访问不存在的会报错

#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
1.3.3通过get()访问

访问不存在的会返回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

1.4、series的运算及标签对齐特性

1.4.1运算
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
1.4.2对齐特性

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

2、DataFrame

DataFrame是带有标签的二维数据结构,(通常每列代表一个特征,每行代表一个样本)。
你可以把它想象成一个电子表格或SQL表,或者 Series 对象的字典。
DataFrame的一行或者一列都是一个Series

2.1 创建DataFrame:

pd.DataFrame(d, index=None, columns=None)

data的类型:
			一维数组,列表,字典或 Series 的字典
			二维 numpy.ndarray
			结构化或记录 ndarray
			Series
			另一个DataFrame

index(行标签)和columns(列标签)