Pandas基础 - 数据处理
pandas 基础
Pandas的数据处理
- np.random.seed(0) #固定随机数 np.random.rand(6,4) #随机生成6行4列 的数
- df指整个表格,df[: 1] 指选择第一行,df[1:3] 选择多行,指索引1到索引3的2行。
- df[2::2] 指从df里面选择索引为2开头,步长为2的 所有行。
- 选择的序列,df[“A”] 指选择A列
- df[[ ]];表示2维,截取的表格,df[ ] 表示1维,截取的的列。df[[“A”,“B”]] = df.iloc [ :,[“A”,“B”]] 表示截取的多行多列。
6. df的显示与隐式的切法:loc 表示显示,iloc 表示隐式。df.loc[“a”:“b”,[“A”,“B”]] 表示a到b的行,A,B两列开始切,即切的4个数据。df.iloc[1:3,2:4] 表示从第1个索引到3个索引,切的2行,再从第3列到第5列(左闭右开),切的2列,即C列与D列。
DataFrame 的过滤
-
两种df的过滤对比:df > 0 表示表里每一个元素是否大于0,返回的是布尔值。df[df>0]表示留着大于0的数,Nan表示空值。
-
对大于0 的数求和,计数,求平均,进行聚合运算。
-
df.loc[“a”] 指找出a 列大于0 的数,返回布尔值。df.loc[:,df.loc[“a”]>0] 指保留"a"列里大于0的所有行,即只要a列有大于0 的数,全都显示。
![![在这里插入图片描述](https://img-blog.csdnimg.cn/20201111155515739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1lpbl9DaHVu,size_16,color_FFFFFF,t_70#pic_center) -
df[df[“A”]>0] 表示过滤出 A 列大于0的所有行。
-
举例:df.loc[(df[‘A’]>0)&(df[‘B’]<0),(df.loc[‘a’])>0&(df.loc[‘b’]<0)]
第一步:用的显示索引,df.loc[ ,] 切的是表格。
第二步:df[“A”]&df[“B”] 表示同时满足A列大于0 和 B 列小于0的行。
第三步:df.loc[‘a’])>0&df.loc[‘b’]<0,表示同时满足a 行大于0 和 b 行小于0的列。
DataFrame 的缺失值判断
-
第一步,需要用到的2个库:numpy and pandas(Series 和 DataFrame)。
-
第二步,读取数据pd.read_csv +设置索引index= arange(1,100),查看数据是用head()都是否设置成功。
-
第三步,df.info() 查看数据类型,float 浮点=小数,object 文本 non-null 没有缺失 ,total 5 columns 共5列,int 64位,占用内存:7KB。
-
第四步,df.mean() 表示对列中的数值型数据求平均,df.describe() 表示对所有数值型数据进行描述性统计。
std 标准差,25%上四位分数,75%下四位分数。 -
将a中的列表,改成dataframe 表格形式,如果在之前没有导入datafame,series ,可以用b = pd.Dateframe代替。
Series 的增删改查
- 用pandas 中的库 导入Series 及DataFrame +设置索引,注意 series() 的前半部分是列表,后半部分是索引。
- 因为s 是序列,所以能用[ ] 直接导出数据,增加或修改直接改变原数据。
3. 不能有括号,drop 的是一个 。
- s.pop() 弹出"f" ,直接改变原数据。s.loc[“b”] =5直接将b 设置成5。
Dataframe 的增删改查
1.创建DataFrame的表,[[ ]] 表示二维,index 表示索引,要有3个,cloumns 列名要有3个。
-
在原来的t1上面增加显示索引y行=[7,5,4],共4行,3列。
-
在DataFrame 中删除行用 drop (行)及pop(列)。
-
增加 t1 的列等于 t1的列名为 k 列 加上 t1 的 列名为一列 的数据总和。
-
t2 = t1 所有行的数值型数据相加,t2 是一条序列,t1 是表格。
-
t1 = t1.drop([“A”,“B”],axis = 1, inplace = Ture) 表示删除“A”列与"B"列,inplace 等于true 表示 同意修改原数据。
-
表示增加一列,一列的列名为seven,t1.sum(axis =1) 表示求每一行的总和,有e,f,g 三行表示有3个值,此时为序列,用[ ] 表列装进去组成了一列并加了列名。
-
表示t1.sum() 和t1.sum(axis = 0) 效果一样 都是求每列之和。
Dataframe 的排序及调整
-
df[“A”].sort_values() 对df的A列进行值的排序(正序)。
-
df_copy.sort_index 指将df_copy 进行排序,里面的参数有self, axis, ascending, inplace, kind, na_position, ignore_index。axis = 1 是选择行,axis = 0 选择列。ascending 是升序,ascending = True 是降序的意思。
-
df_copy.sort_values(by = “A”, ascending = False ) 。by指通过哪列进行排序,ascending/asc(sql) 按照什么 顺序进行排序。
-
df1.set_index 重置索引(), [“A”,“B”,“C”,“D”] 表示重置行的索引。reset_index(drop = False)保留原索引,加上新索引,当drop = True 时,删除原索引,保留新索引。
-
df.var() df.std() df.sum() df. describe() 描述统计 。
- pandas 中DataFrame 数据的填补,空值用np.nan ,nan只能用小写,用大写Nan会报错。其次a 一定要是二维的数据{{ }},[[ ]] , (( )) 。
- DataFrame 中提取单列或连继几列一定要加显示或者隐式索引。不加索引就要用[ ]显示二维。
- DataFrame 中提取[“一”]列,loc提取序列,当 a= data.loc[:,“一”:“三”] 提取的是表格,因为有多列,而 [ ] 始终提取的是表格。
- 删除原数据的某一列,要用drop( 列名,axis = 1),删除那一行用drop(行名,axis = 0)
Dataframe 的合并及重塑
- 原始数据df2
- reindex(range(1,4)) 从1-4,可以*定义
- reset_index(drop = true) 从0-N 不能*定义
- 全连接,表示以上下连接所有并集,没有的用Nan补充。
- 全连接,表示以左右连接所有并集,没有的用Nan补充 。
- 所有a = pd.concat([df1,df2],axis = 1,join = “outer”) 用的比较广。
- a = pd.concat([df1,df2],axis = 1,join = “inner”) 表示用内连接的方式增加列,没有的用Nan补充。
- merge中两张表没有相同的列名,会报错,一对多表,可以使用这张表。
- concat ([表1,表2 ],选择0轴或者1轴进行拼接,一般以左连接或者内连接较多。
10.pd的转轴:stack(列转行),unstack(行转列),pivot(转轴)一般很少用。
Dataframe 的分组运算
- 分组:split- apply - combine (key/分组变量 - 运用函数 - 结果聚合)
- 通过多种方式汇总。
- 查看通过种类分类的数量进行降序排列。
- 这种列X列的方式,在sql 中直接用* as 命名,在Dax表达式中跟这个很相似,直接用[ ]表示某列。
Dataframe 的聚合运算
- 原理:把0行和3行传给了湖南,将1行和2行传给了江西,所以data.groupby(mapping) 对江西湖南的数值求和。
2. agg 聚,自动的意思,经常与groupby连用。agg()里面放的np中的聚合函数。
3. 1)自定义ptp 函数,return 返回最大减去最小值。然后通过种类分类。
2)lambda 返回所有列数据的最大减去所有列数据最小值,得到所有列数据,然后通过种类分类。
4. 找出所需要的列,通过种类分类,将价格的方差transform 到这个表里。
5. data.pivot_table(index = [“种类”]) #先种类分组,再平均
6. data.pivot_table(index=[ “种类”,"产地].aggfunc = np.sum) #先种类分组,再平均
7. pd.crosstab(data[“种类”],data[“产地”]) 指分类分组频数,常用
PS:
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G