pandas 数据分析、pandas:DataFrame、pandas 其他常用方法、cvs文件读取,写入,保存
1、pandas 数据分析 (是一个强大的python数据分析的工具包)
pandas 是基于NumPy 构建的
# 主要功能:
# 具备对其功能数据结构 DataFrame、Series
# 集成时间序列功能
# 提供丰富的数学运算和操作
# 灵活处理缺失数据
# 安装方法: pip install pandas
# 引用方法: import pandas as pd
# pd.Series([11,12,13,14],index=list('a,b,c,d,')) # (可指定索引) 列表和字典的结合体
# 结果: 索引在左,值在右 (一维数据)
# a 11
# b 12
# c 13
# d 14
# 取值:
# a = _
# a['a']
# 获取左侧索引列值
# ret.index # 返回的是一个数组 对象
# 获取右侧值
# ret.values #
# 可以从 ndarray创建Series
# pd.Series(np.arange(10))
# 通用函数
# Series 也可以用
# Series 支持 列表、数组、字典创建
# 'a' in ret # 如果key在ret里就返回True
# 切片、花式索引
# a['a':'c'] # 切片
# a[['a','d']] # 花式索引
# 定义根据标签查找
# ret.loc[10]
# 定义根据下标查找
# ret.iloc[11]
# 两Series 数组相加,是根据索引进行相加,如果有一个数组缺失对应索引则会出现NaN:
# ret1.add(ret2.fill_value=0) # 意为补零,否则会出现NaN
# 删掉有NaN值的元素
# ret.dropna() # 需重赋返回值才可更改原内容
# 选出所有缺失的值
# ret[ret.isnull()]
# 所有缺失值的位置返回True
# ret.isnull()
# 把所有缺失值填充成指定值
# ret.fillna(0)
2、pandas:DataFrame ***** 是一个二维的表格型数据结构
# 可以被看做是由Series组成的字典,并且共用一个索引
# 创建方式:
# 方法1:
# pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]}) # 或可以指定行索引 index=xxx
# 结果:
# one tow
# 0 1 4
# 1 2 3
# 2 3 2
# 3 4 1
# 方法2:
# pd.DataFrame({'one':pd.Series([1,2,3],index=['a,','b','c']),'tow':pd.Series([1,2,3],index=['c','b','a'])})
csv 文件读取、写入、保存
# pd.read_csv('filename.csv') # 读 。 默认分隔符是 逗号 ,
# pd.read_table('filename.csv',sep=',',header=None,name=['name1','name2','name']) # 读 。 默认分隔符是 table \t 。 sep 设置默写入文件的分隔符 默认读入时第一行为列名,如果没有第一行列名可header=None设置 name=[指定列名]
# pd.read_table('filename.csv',sep=',',header=None,name=['name1','name2','name'],index_col='id) # 默认行索引自动生成一列,index_col 可选择一列作为索引
# pd.read_table('filename.csv',sep=',',header=None,name=['name1','name2','name'],index_col='date',parse_dates=['date']) # 指定某些列是否被解析为日期,布尔值或列表
# ret.to_csv('newname.csv') # 保存
# na_values # 指定某些字符串表示缺失值
# na_rep # 指定写入时缺失值转换的字符串,默认为空字符串
# index=False # 不输出行索引一列
# cols=['name1','name'] # 指定输出的列,传入列表
# 查看数据常用属性及方法:
# 查看全部行索引
# ret.index
# 获取列索引
# ret.columns
# 返回二维值
# ret.values
# 转置
# ret.T
# 获取快速统计
# ret.describe()
# 对列改名
# ret.rename(columns={'old_name':'new_name','old_name2':'new2'})
# 切片(推荐方法) 标签,标签
# ret.loc[:10,['name2','name3']] # 左行,右列 缺一不可
# 下标,下标
# ret.iloc[:10,0:2] # 左行,右列 缺一不可
# 删除NAN,nan
# ret.dropna(how='all') # 表示一整行都是NAN才会删除(否则一行只要出现nan就会删除整行)
# ret.dropna(how='all',axis=1) # 轴:0是以行为轴,1是以列为轴 # 意为:一整列是nan就删除整列
3、pandas 其他常用方法 (适用Series和DataFrame)
# 排序
# ret.sort_index(ascending=True) # 按索引排序,True升 False降
# ret.sort_index(ascending=True,axis=1) axis=1 是按列字典排序
# ret.sort_values(['close','id']) # 按列排序。(优先按close列排序,如两个值一样则按id排序)
# ret.sort_values('close',ascending=False) # 按列降序
# applymap(func) # 将函数应用在DataFrame 各个元素上
# ret.applymap(lambda x:x+1)
# map(func) # 将函数应用在Series各个元素上
# apply(lambda x:x.sum()) # x 是按列传入
# mean(axis=0,skipna=False) # 平均数
# sum(axis=1) # 求和
# 层次化索引
# ret=pd.Series(np.random.rand(9),index=[['a','a','a','b','b','b','c','c','c'],[1,2,3,1,2,3,1,2,3]])
# pandas : 时间对象处理
# !pip install python-dateutil
# dateutil.parser.parse('2001/2/13 1:10:10') # 自动转换成时间对象
# pd.date_range('2017-01-01','2017-08-01') # 自动生成 2017-01-01 至 2017-08-01的所有每一天日期对象
# 参数:
# start 开始时间
# end 结束时间
# periods 时间长度 (起始+长度 搭配使用)
# freq 时间频率,默认为"D",可选 (表示每多长时间产生下一个日期)
# H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es),S(econd),A(year)
# 工作日 15号和31号,半月 分钟 秒 年

浙公网安备 33010602011771号