标签:出错 pen 使用数组 nbsp localhost ext 原来 div concat
import pandas as pd from pandas import Series,DataFrame import numpy as np
默认索引为0到N-1的整数型索引
#使用列表创建Series Series(data=[1,2,3,4],index=[‘ds‘,‘dsa‘,‘re‘,‘gr‘],name=‘haha‘)#index参数指定索引 #使用numpy创建Series Series(data=np.arange(10,60,6))
dic = { ‘math‘:100, ‘English‘:50 } Series(data=dic,name=‘qimo‘)
- 使用index中的元素作为索引值
- 使用s.loc[](推荐):注意,loc中括号中放置的一定是显示索引
s = Series(np.random.randint(60,100,size=(5,)),index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]) s s[‘b‘]
(2) 隐式索引:
- 使用整数作为索引值
- 使用.iloc[](推荐):iloc中的中括号中必须放置隐式索引
注意,此时是半开区间
s.iloc[1]
s.iloc[[1,2,3]]
s.loc[‘b‘]
s.loc[‘a‘:‘c‘]
s[‘f‘] = 100 s
s.index
s.values
s.size
s.shape
s.head(3)
s.tail(3)
s = Series(data=[1,1,2,2,3,3,4,4,4,5,6,7,8,7,7,66,43,342,6665,444,333,444]) s.unique() #Series中的去重函数
s1 = Series(data=[1,2,3,4,5],index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]) s2 = Series(data=[1,2,3,4,5],index=[‘a‘,‘b‘,‘c‘,‘f‘,‘g‘]) s = s1+s2 s
s.loc[s.notnull()] #空值检测,过滤 s.iloc[[True,False,True,True,False,True,True]] #True/False是可以作为Series的索引
DataFrame(data=np.random.randint(60,100,size=(3,3)),index=[‘a‘,‘b‘,‘c‘],columns=[‘A‘,‘B‘,‘C‘])
df = DataFrame(data=np.random.randint(60,100,size=(3,3)),index=[‘a‘,‘b‘,‘c‘],columns=[‘A‘,‘B‘,‘C‘]) df df.values df.index df.columns
- 通过类似字典的方式 df[‘q‘]
- 通过属性的方式 df.q
df = DataFrame(data=np.random.randint(60,150,size=(4,2)),index=[‘chinese‘,‘math‘,‘english‘,‘lizong‘],columns=[‘zhangsan‘,‘li‘]) df #修改列索引 df[‘li‘] = [1,2,3,4] df #获取前两列 df[[‘zhangsan‘,‘li‘]] df.li df[‘li‘]
- 使用.loc[]加index来进行行索引 - 使用.iloc[]加整数来进行行索引
df.loc[‘math‘] df.iloc[1] # 取出前2行 df.iloc[[0,1]]
df.loc[‘math‘,‘zhangsan‘]
df[‘math‘:‘lizong‘]
在loc和iloc中使用切片(切列) : df.loc[‘B‘:‘C‘,‘丙‘:‘丁‘]
df.loc[:,‘zhangsan‘:‘li‘]
示例: 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。 假设张三期中考试数学被发现作弊,要记为0分,如何实现? 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现? 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现 df = DataFrame(data=np.random.randint(60,150,size=(4,2)),index=[‘chinese‘,‘math‘,‘english‘,‘lizong‘],columns=[‘zhangsan‘,‘li‘]) df df1 = df.copy() df1 #假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。 df2= df1.copy() df2 (df1+df2)/2 假设张三期中考试数学被发现作弊,要记为0分,如何实现? df2.loc[‘math‘,‘zhangsan‘] =0 df2 # 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现? df2.li += 100 df2 # 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现? df2 +=10 df2
有两种丢失数据:
None是Python自带的,其类型为python object。因此,None不能参与到任何计算中。
np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN。
import numpy as np import pandas as pd from pandas import DataFrame,Series type(None) type(np.nan)
np.random.seed(10) df = DataFrame(np.random.randint(50,200,size=(6,5)),index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘],columns=[‘A‘,‘B‘,‘C‘,‘D‘,‘E‘]) df #将某些数组元素赋值为nan df.iloc[1,3] = None df.iloc[2,2] = np.nan df.iloc[4,2] = None df
isnull()
notnull()
dropna()
: 过滤丢失数据fillna()
: 填充丢失数据(1)判断函数
- ``isnull()`` 一般后面往往跟的是any()
- ``notnull()``一般后面往往跟的是all()
df.isnull().any(axis=1) # 只要有一个true 就返回true df.isnull().all(axis=1) #只要有一个False 就返回False,全部位true才返回true df.notnull().all(axis=1)
df.dropna() 可以选择过滤的是行还是列(默认为行):axis中0表示行,1表示的列
df.dropna(axis=0) # 在drop系列函数中,轴向的参数值0表示的是行,1表示的是列
df.drop(labels=‘A‘,axis=1) # drop 可以删除任意的行和列
(3) 填充函数 Series/DataFrame
- ``fillna()``:value和method参数
np.random.seed(10) df = DataFrame(np.random.randint(50,200,size=(6,5)),index=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘],columns=[‘A‘,‘B‘,‘C‘,‘D‘,‘E‘]) df #将某些数组元素赋值为nan df.iloc[1,3] = None df.iloc[2,2] = np.nan df.iloc[4,2] = None df df.fillna(value=10)
method 控制填充的方式 bfill后向填充 ffill前向填充,可以选择前向填充还是后向填充
df.fillna(method=‘ffill‘,axis=0) df.fillna(method=‘bfill‘,axis=0) #连续多个nan df.iloc[1,3] = None df.iloc[4,3] = np.nan df.iloc[3,2] = None df #解决连续nan指定填空几个 limit df.fillna(method=‘bfill‘,axis=0,limit=1)
最常见的方法是给DataFrame构造函数的index或者columns参数传递两个或更多的数组
import numpy as np import pandas as pd from pandas import DataFrame,Series #创建了一个索引对象,该索引对象为二层索引 df = DataFrame(np.random.randint(60,100,size=(2,4)),index=[‘tom‘,‘jay‘],columns=[[‘qizhong‘,‘qimo‘,‘qizhong‘,‘qimo‘],[‘c‘,‘m‘,‘c‘,‘m‘]]) df
df[‘qimo‘]
获取所有学生期末的math的考试成绩
df.qimo[‘math‘]
df.qizhong.loc[‘tom‘]
获取tom期末的math成绩
df[‘qimo‘].loc[‘tom‘,‘math‘]
# 总结: # 访问一列或多列 直接用中括号[columnname] [[columname1,columnname2...]] #访问一行或多行 .loc[indexname] # 访问某一个元素 .loc[indexname,columnname] 获取李四期中的php成绩 # 行切片 .loc[index1:index2] 获取张三李四的期中成绩 # 列切片 .loc[:,column1:column2] 获取张三李四期中的php和c++成 1. 分析比较Series和DataFrame各种索引的方式,熟练掌握.loc()方法 - 在df中索引应用在行 - 在df中切片应用在列
所谓的聚合操作:平均数,方差,最大值,最小值……
# 计算各个科目期中期末平均成绩 df.mean()
标签:出错 pen 使用数组 nbsp localhost ext 原来 div concat
原文地址:https://www.cnblogs.com/TodayWind/p/13771579.html