- import pandas as pd
- ser=pd.Series([12,33,55,66],index=['a','s','d','f'])
- print(ser)
- '''输出为:
- a 12
- s 33
- d 55
- f 66
- dtype: int64
- '''
我们可以通过 Series 的 index 很方便得到其内部元素, 或者为某元素赋值:
- import pandas as pd
- ser=pd.Series([12,33,55,66])
- print(ser[2])
- ser[2]=99
- print(ser[2])
- '''输出为:
- 55
- 99
- '''
Series 对象可以进行运算, 比如加减乘除, 也可以使用 Numpy 中的数学函数来对它进行计算:
- import pandas as pd
- ser=pd.Series([12,33,55,66])
- ser2=ser/2
- print(ser2)
- import numpy as np
- print(np.log(ser))
- '''输出为:
- 0 6.0
- 1 16.5
- 2 27.5
- 3 33.0
- dtype: float64
- 0 2.484907
- 1 3.496508
- 2 4.007333
- 3 4.189655
- dtype: float64
- '''
从上面可以看出, Series 对象似乎跟字典很相似, 我们可以把 Series 对象当作字典来使用, 我们在创建 Series 对象时, 将创建好的字典传入 Series 的构造函数即可, 这样字典的键就组成了索引数组, 每个索引对应的元素就是字典中对应的值:
- import pandas as pd
- dic={
- 'wife':'kathy','son':'mary','mother':'lily','father':'tom'
- }
- ser=pd.Series(dic)
- print(ser)
- '''输出为:
- wife kathy
- son mary
- mother lily
- father tom
- dtype: object
- '''
四, DataFrame 的使用
DataFrame 这种数据结构针对的是多维数据, 由按一定顺序排列的多列数据组成, 列之间的数据类型会不同, 如下图所示:
从图中可以看出, DataFrame 对象有两个索引数组, 第一个数组 index 与行相关, 这与 Series 相似, 每个 index 标签与所在行的所有元素相关联. 它的第二个数组包含一系列标签, 每个标签下包含一列数据. 可以将 DataFrame 理解为由多个 Series 对象组成的字典, 每一列的名称为字典的键, Series 作为字典的值.
创建 DataFrame 对象的常用方法就是传递一个字典对象给 DataFrame() 构造函数:
- import pandas as pd
- dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['男','男','女','男']}
- frame=pd.DataFrame(dic)
- print(frame)
- '''输出为:
- name age sex
- 0 tom 14 男
- 1 mary 15 男
- 2 john 77 女
- 3 mike 45 男
- '''
跟 Series 对象类似. DataFrame 如果没有明确指定标签, 那么它的默认标签也是从 0 开始递增. 如果我们想知道 DataFrame 对象所有列的名称, 则调用 columns 属性就可以了, 获取索引列表的话就调用 index 属性, 调用 values 属性将获取所有的元素. 可以给 DateFrame 对象添加列:
- import pandas as pd
- dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['男','男','女','男']}
- frame=pd.DataFrame(dic)
- frame['weight']=[89,99,145,123]
- print(frame)
- '''输出为:
- name age sex weight
- 0 tom 14 男 89
- 1 mary 15 男 99
- 2 john 77 女 145
- 3 mike 45 男 123
- '''
在数据处理中, 有有时也会用到 DataFrame 的转置操作, 即把行变为列, 列变为行, 调用 DataFrame 的 T 属性即可完成转置:
- import pandas as pd
- dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['男','男','女','男']}
- frame=pd.DataFrame(dic)
- print(frame.T)
- '''输出为:
- 0 1 2 3
- name tom mary john mike
- age 14 15 77 45
- sex 男 男 女 男
- '''
五, Series 与 DataFrame 对象之间的运算
pandas 允许 Series 对象与 DataFrame 对象进行运算, 定义 Series 和 DataFrame 对象时, 把 Series 对象的索引和 DataFrame 的列名称保持一致:
- import pandas as pd
- import numpy as np
- frame=pd.DataFrame(np.arange(16).reshape((4,4)),index=['age','name','sex','weight'],columns=['john','tom','mary','cathy'])
- print(frame)
- ser=pd.Series(np.arange(4),index=['john','tom','mary','cathy'])
- print(ser)
- res=frame-ser
- print(res)
- '''输出为:
- john tom mary cathy
- age 0 1 2 3
- name 4 5 6 7
- sex 8 9 10 11
- weight 12 13 14 15
- john 0
- tom 1
- mary 2
- cathy 3
- dtype: int32
- john tom mary cathy
- age 0 0 0 0
- name 4 4 4 4
- sex 8 8 8 8
- weight 12 12 12 12
- '''
可以看出, DataFrame 对象的各元素分别减去了 Series 对象中索引与之相同的元素, DataFrame 对象每一列的所有元素都执行了减法操作.
来源: https://www.cnblogs.com/IAMTOM/p/10216337.html