Pandas
Pandas
安装
pip install pandas
import pandas as pd
Series
类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成
创建方式
-
域名es([4,7,-5,3]),列表或者数组都行
-
域名es([4,7,-5,3],index=[\'a\',\'b\',\'c\',\'d\']) 设置索引标签
-
域名es({\'a\':1,\'b\':2}
-
域名es(0,index=[\'a\',\'b\',\'c\',\'d\'])
获取值数组和索引数组:values属性和index属性
比较像数组和字典的结合体
使用特性
-
运算和numpy的array是一样的
-
切片和列表一样,可以通过索引标签来切片
-
支持numpy的通用函数
-
支持布尔索引
-
可以使用字典创建Series对象
-
遍历打印的是值而不是键,这是和dict的区别
整数索引
sr = Series(域名e(20)) sr2 = sr[10:].copy() >> 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 域名[10] # 以标签为整数10作为索引 >> 10 域名[10] # 以下标为整数10作为索引 >> 19
注意:下标和标签是不一样的,所以使用整数作为索引要使用iloc
数据对齐
pandas在进行两个Series对象的运算时,会按索引标签进行对其然后计算,一般index是去重的
sr1 = 域名es([1,2,3],index=[\'c\',\'a\',\'d\']) sr2 = 域名es([4,5,6,9],index=[\'d\',\'c\',\'a\',\'b\']) sr1 + sr2 >> a 8 # 2+6 b NaN c 6 # 1+5 d 7 # 4+3 域名(sr2,fill_vlue=0) a 8 b 9 # 9+0 c 6 d 7
缺失数据处理
-
删掉缺失数据:
-
sr.[域名ull()]
-
sr.dropna()
-
-
为缺失数据赋值0
-
sr.fillna(0)
-
若想保存则sr = 域名na(0)
-
-
为缺失数据赋值平均数
-
域名na(sr.mean())
-
DataFrame
是一个表格型的数据结构,含有一组有序的列。可以看作是由Series组成的字典,并且共用一个索引
创建方式
-
pd.DataFrame({\'one\':[1,2,3],\'two\':[2,3,4]})
-
pd.DataFrame({\'one\':域名es([1,2,3],index=[\'a\',\'b\',\'c\']),\'two\':域名es([2,3,4,5],index=[\'a\',\'b\',\'c\',\'d\'])})
csv文件读取与写入
-
域名_csv(\'域名\')
-
域名sv()
常用属性
属性 | 描述 |
---|---|
index | 获取索引 |
T | 转置 |
columns | 获取列索引 |
values | 获取值数组 |
describe() | 获取快速统计 |
索引和切片
-
df.loc[\'行索引\',\'列索引\']
-
df.iloc[\'行索引\',\'列索引\']
-
域名[花式索引,切片]
-
例如:df.[[\'a\',\'c\'],:]
-
不要用两个中括号来索引
数据对齐
-
在运算时,会进行数据对其,其行索引和列索引分别对其
缺失数据处理
-
dropna(axis=0,where=\'any\',...)
-
域名na(how=\'all\'):这一行的值全为空则删除
-
axis=0,是竖轴,删行;axis=1,是横轴,删列
-
-
fillna()
-
isnull()
-
notnull()
其他常用方法
方法 | 描述 |
---|---|
mean() | axis=0,按列求平均值;axis=1,按行求平均值 |
sum() | 求和 |
sort_index() | 索引排序,有缺失值的排最后 |
sort_values(by=\'\',ascending=true) | 值排序,有缺失值的排最后 |
Numpy的通用函数 |
时间对象
-
import dateutil
-
域名e(\'02/03/2001\')
-
-
pd.to_datetime([\'2001-01-01\',\'2010/Feb/02\']):转成DatetimeIndex对象
时间对象生成
-
域名_range()
-
start:开始使劲按
-
end:结束时间
-
periods:长度
-
freq:频率,默认\'D\'
-
H:hour
-
B:business
-
SM:semi month,半个月
-
T:minutes
-
S:second
-
W-Mon:每周一
-
1h20:每1小时20分钟
-
-
时间序列
以时间对象为索引的Series或DataFrame
例如:sr = 域名es(域名ge(1000),index=域名_range(\'2021-01-01\',periods=1000))
datetime对象作为索引时存储在Datetimeimdex对象中
特殊功能:
-
传入”年“或”年-月“作为切片
-
传入日期范围作为切片方式
-
丰富的函数支持:resample(),truncate()...
-
域名mple(\'M\').sum():求每月的和
-
文件处理
常用文件格式:csv
读取文件
pandas读取文件:从文件名、URL、文件对象中加载数据
-
read_csv 默认分隔符为逗号
-
域名_csv(\'域名\',index_col=\'date\',parse_dates=True):指定date列变成时间对象
-
会默认把第一行作为列名
-
-
read_table 默认分隔符为制表符
-
主要参数
-
sep:指定分隔符
-
header:指定文件无列名
-
name:指定列名
-
index_col:指定某列作为所引
-
skip_row:指定跳过某些行
-
na_values:指定某些字符串表示缺失值
-
parse_dates:指定某些列是否被解析为日期,类型为布尔值或列表
-
-
还有:read_json(),read_html(),read_excel(),read_sql()
-
read_excel()需要安装xlrd的包
-
写入文件
写入到csv文件:to_csv函数
主要参数:
-
sep:指定分隔符
-
header=False:不输出列名行
-
index=False:不输出行索引列
-
na_rep:指定缺失值转换的字符串,默认为空字符串
-
columns:指定输出的列,传入列表
还有:to_json(),to_html(),to_excel(),to_sql()