Python之pandas笔记

Python之pandas笔记

一、创建

1.创建 Series (一维,带标签的数组)

t = pd.Series(np.arange(10), index= list(string.ascii_uppercase[:10]))

2.创建 DataFrame (二维,Series的容器 )

t = pd.DataFrame(np.arange(6).reshape((2,3)), index=list('ab'),columns=list('csr') )

3.DataFrame的基础属性

#行列数

print(tt2.shape)

#列数据类型

print(tt2.dtypes)

#数据维度

print(tt2.ndim)

#行索引

print(tt2.index)

#列索引

print(tt2.columns)

#对象值(二维数组)

print(tt2.values)

4.DataFrame整体情况的查询

#显示头部的几行默认五行
print(tt2.head(2))
#显示末尾几行 默认五
print(tt2.tail())

显示相关的信息

print(tt2.info())


快速的纵隔统计记过: (计数,均值,标准差,最大值,四分位数, 最小值)

print(tt2.describe())

5.DataFrame 对数据排序 (升序或者降序)

a) 升序  d1 = dogname.sort_values(by="Count_AnimalName")
b) 降序  d2 = dogname.sort_values(by="Count_AnimalName", ascending=False) 

6.取行取列操作

数字取行, 字符串取列       d2[:20]['Row_Labels']

df.loc方法:(通过标签索引行数据)   
print(csv.loc[['a','b'],['w','r']])
遍历的形式,包括后面的r列
print(csv.loc[['a','b'],'w':'r'])


df.iloc方法 (通过位置获取行数据) 

print(csv.iloc[[0,2],[2]])
遍历的形式,不包括后面的3print(csv.iloc[0:3,[2,3]])
   

7.pandas布尔值类型条件

多个条件可以 通过 & 链接
dogname[(dogname['Count_AnimalName']>50) & (dogname['Row_Labels'].str.len()>4)]

8.对nan的一些操作

a) 判断是否为 nan : pd.isnull(t)  或者  pd.notnull(t)
b) 删除nan所在行列:  t.dropna(axis=0, how='any', inplace=False) how:any/all(全为nan删除) inplace是否直接替换
c) 填充nan: t.fillna(t.mean())
d)0改为nan:t[t==0] = np.nan  

9.对于过长的DataFrame与numpy使用print打印时,全部显示(不会出现省略号)

a) 对于DataFrame: 
    1)显示所有的列: pd.set_option('display.max_columns', None)
    2) 显示所有的行: pd.set_option('display.max_rows', None)
b)对于numpy:
    numpy.set_printoptions(threshold = np.inf) 
    #若想不以科学计数显示: numpy.set_printoptions(suppress = True)

10.数组合并之join / merge

a)  join:默认情况下把行索引相同的数据合并到一起:
    df1.join(df2)  注意:根据前面的行列进行合并,假如两个df制定了列,则不可有重复列名
b)  merge:根据列索引进行合并 
    1)默认为内连接(交集): df1.merge(df2, on='c')     (假如都合适,22会出现四行数据)
    2)merge outer外连接(并集):df1.merge(df2, on='c', how='outer')把除了交际以外的数据,显示c有的那一个df的数据,没有的补充nan
    3)merge left 左连接(根据左边的df)  
    4)merge right右连接(根据右边的df

11.分组与聚合

1) grouped = df.groupby(by='列索引')   #根据此列数据进行分组
2) grouped 是一个DataFrameGroupBy对象,是可迭代的
3) grouped中的每一个元素是一个元组
4) 元组里面是 (索引(分组的值),分组后的DataFrame)

12.DataFrameGroupBy 对象有很多经过优化的方法
在这里插入图片描述
13.简单的索引操作

1) 获取index: df.index
2) 指定index: df.index = ['x', 'y']
3) 重新设置index: df.reindex(list("abc"))  #这个操作类似查询,在df中取出有"abc"列的数据,没有的nan填充
4) 指定索引(index)为 某一列: df.set_index("列名",drop=Fasle)   #drop指定Fasle,指定列成为索引,此列也为数据   
5) 返回index的唯一值(去重): df.set_index('列名').index.unique() 

14.从复合索引中取值

Series) 
    1) s1['a']['b']
    2) s1['a', 'b']

DataFrame)
    df.loc['a'].loc['b']

15.从内层索引开始取值

df.swaplevel()

16.pandas中的时间序列

1)生成时间范围
开始结束时间) pd.date_range(start="2001-01-01", end="2002-01-01", freq="10D")
开始时间和生成个数)pd.date_range(start="2001-01-01", periods = 10, freq= "WOM-3FRI")

2)时间字符串转换成 时间序列
df["timeStamp"] = pd.to_datetime(df["timeStamp"], format="")
format对panda无法格式化的时间字符串进行处理,详情搜索

17.pandas重采样重采样:

指的是将时间序列从一个频率转换成另一个频率进行处理的过程。将高频率转换成低频率数据为降采样,低频率转换成高频率为升采样pandas提供一个  resample 的方法来帮助我们实现频率转化例如 以月份进行统计t.resample("M").mean()

18.PeriodIndex

DatetimeIndex 可以理解为时间戳
那么 PeriodIndex可以理解为时间段
例子: periods = pd.PeriodIndex( year=data["year"], month=data["month"],day=data["day"],hour=data["hour"], freq="H" )
如何给这个时间段降采样? 
data = df.set_index(periods).resample("10D").mean()

19.时间类型转 字符串类型

time.strftime('%y%m%d')

在这里插入图片描述

大哥点个关注!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值