1. Series
Series 可以理解为一个一维数组,index 名称可以自己改动,类似于定长的有序字典,有 index 与 value。
1.1 Series 对象的创建
import pandas as pd
import numpy as np
# 创建一个空的 Series
s1 = pd.Series()
# 从 ndarray 创建一个 Series
data = np.array(['zs', 'ls', 'ww', 'zl'])
s2 = pd.Series(data)
# 创建 Series 时修改 index
s3 = pd.Series(data, index=['100', '101', '102', '103'])
# 从字典创建一个 Series
s4 = pd.Series({
'100': 'zs', '101': 'ls', '102': 'ww'})
# 从标量创建一个 Series
s5 = pd.Series(5, index=[0,1,2,3])
print(s1, end='\n\n')
print(s2, end='\n\n')
print(s3, end='\n\n')
print(s4, end='\n\n')
print(s5, end='\n\n')
注意:
Series 为一维数组,不为二维数组,只是输出为竖直方向输出。
第一列为索引,第二列为值
1.2 Series 对象的数据访问
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s, end='\n\n')
# 使用数字索引检索元素
print(s[0], end='\n\n')
print(s[:3], end='\n\n')
print(s[:-3], end='\n\n')
# 使用标签索引检索元素
print(s['a'], end='\n\n')
# 标签索引切片,包含开始和结束位置
print(s['a':'c'], end='\n\n')
# 支持索引掩码
print(s[['a', 'b', 'c']])
1.3 Series 常用属性
属性 | 说明 |
---|---|
values | 返回 ndarray |
index | 返回索引序列 |
dtype | 返回数据类型 |
size | 返回元素个数 |
ndim | 返回维数 |
shape | 返回每维的元素个数(维度) |
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s, end='\n\n')
print(s.values)
print(s.index)
print(s.dtype)
print(s.size)
print(s.ndim)
print(s.shape)
2. pandas 日期类型
pandas 支持多种格式字符串数据转换为日期类型数据
2.1 使用 pandas 将字符串转为日期类型数据
import pandas as pd
import numpy as np
dates = pd.Series([
'2011',
'2011-02',
'2011-03-01',
'2011-03-01 11:11:11',
'2011/3/1',
'01 Jun 2011'
])
dates = pd.to_datetime(dates)
print(dates)
2.2 获取时间的某个日历字段的数值
Series.dt.日期字段
Series 提供的日期字段:
import pandas as pd
import numpy as np
dates = pd.Series([
'2011',
'2011-02',
'2011-03-01',
'2011-03-01 11:11:11',
'2011/3/1',
'01 Jun 2011'
])
dates = pd.to_datetime(dates)
print(dates)
print(dates.dt.weekday) # 周几
print(dates.dt.quarter) # 第几季度
2.3 日期计算
pandas 支持计算两日期间的偏移时间。
import pandas as pd
import numpy as np
dates = pd.Series([
'2011',
'2011-02',
'2011-03-01',
'2011-03-01 11:11:11',
'2011/3/1',
'01 Jun 2011'
])
dates = pd.to_datetime(dates)
# 获取时间偏移量
delta = dates-pd.to_datetime('1970-1-1')
print(delta)
# 获取时间偏移量的天数
# delta.dt.days 时间偏移量只有这一个属性
print(delta.dt.days)
2.4 生成一组时间序列
通过指定周期和频率,使用 data_range() 函数可以创建日期序列。默认情况下,频率为 ‘D’ (即以 Day 为单位) 。
import pandas as pd
import numpy as np
# 从 2019-10-1(包含) 开始向后取 7 天,默认日期间隔为 天
dates = pd.date_range('2019-10-1', periods=7)
print(dates)
# 修改日期间隔为 月
# 每个月的天数不一样,输出的为每个月的最后一天的日期
dates = pd.date_range('2019-10-1', periods=7, freq='M')
print(dates)
# 日期间隔为工作日 B
dates = pd.date_range('2019-10-1', periods=7, freq='B')
print