Pandas知识点总结

Pandas知识点总结

初始化

import pandas as pd
s = pd.Series([1,2,3,4,5,6,np.nan]) # np.nan相当于什么都没有
dates = pd.date_range('20200101', periods=6) # 初始化六个日期
df=pd.DataFrame(np.random.randn(6,4), index=dates, columns=['a','b', 'c', 'd']) # index是行序号; columns是列序号
pd.DataFrame(np.arange(12).reshape((3,4))) # 不指定序号的情况下, 行序号和列序号各自从0开始分配
df2=pd.DataFrame({'A':pd.Series([1,2,1,4], index=list(range(4)), dtype='float64'),
                  'B':pd.Timestamp('20200101')
                 }) # 从字典初始化DataFrame, 不足位自动填充

Pandas性质

函数说明
df.dtypes类型
df.index所有行序号
df.columns所有列序号
df.values所有值
df.T转置
df.describe()统计数据
df.sort_index(axis=0, asending=False, by=‘A’)ascending=True:正序; ascending=False:倒序; by='name’通过行名或列名排序

Pandas切片与数据修改

df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
print(df.A, df['A']) # 都是输出column'A'
print(df[0:1], df['20200101':'20200101']) # 功能相同, 输出行
print(df.loc['20200101']) # 取出行, 但不能取列
print(df.loc[:,['A','B']]) # 保留所有的行,取出特定的列
print(df.loc['20200106',['A','B']]) # 取出特定的行和列
print(df.iloc[3:5, 2]) # 输出4-5行, 第3列
print(df.iloc[[1,3,5], 1:3]) # 输出不连续的按index索引的数据
print(df[df.A>8]) # 筛选column A大于8的数据
df[df.A>12] = 0 # 将column A中大于12的数据修改为0,修改范围包括非column A的列
df.A[df.A>12] = 0 # 将column A中大于12的数修改为0,只修改column A, 不修改关联列
df['F'] = np.nan # 新增列
print(df.dropna(axis=0, how='any')) # how={'any, 'all'} 删除空白数据, any:仅一项为空白删除; all:所有项都为空白删除
print(df.fillna(value=0)) # 用0填补空白数据
print(df.isnull()) # 是否有缺失数据, 输出表格
print(np.any(df.isnull())==True) # 只要有一项数据丢失就显示True

Pandas文件读取与保存

# read_+file format与to_+file format一一对应
data = pd.read_csv('student.csv') # 读取csv文件
data.to_pickle('students.pickle') # 保存为pickle文件

Pandas合并与拆分

# concatenating
df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])
res = pd.concat([df1, df2, df3], axis = 0, ignore_index=True) 
# axis=0:跨行合并; axis=1:跨列合并; 
# ignore_index=True:忽略原有的index重新排序, ignore_index=False:仍为原值
res = pd.concat([df1,df2],join='inner',ignore_index=True)
# join='inner'就是连接共有的列, join='outer'就是全连接, 类比数据库

# append
res = df.append([df1, df2],ignore_index=True) # 可合并多列

# merge
res = pd.merge(left, right, on='key') # 根据column key进行合并
pd.merge(left,right,on=['key1','key2']) # 根据column key1, key2进行合并
pd.merge(left,right,on=['key1','key2'],how='outer')
# how=['inner', 'outer', 'left', 'right'] ,left,right始终指前后两个合并的DataFrame, 与DataFrame的名字无关
# indicator=True:开启合并显示; indicator=False:默认, 关闭合并显示
left = pd.DataFrame({'A':['A0','A1','A2'],
                     'B':['B0','B1','B2']},
                     index=['K0','K1','K2'])
right = pd.DataFrame({'A':['A0','A2','A3'],
                     'D':['D0','D2','D3']},
                     index=['K0','K2','K3'])
res = pd.merge(left,right,left_index=True,right_index=True,suffixes=['_A1','_A2'])
# 以left和right的index合并, 相同的index根据suffixes重命名

Reference

https://mofanpy.com/tutorials/data-manipulation/np-pd/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值