导图社区 最强 Pandas
根据B站莫烦的视频教程整理而来, 具体的课件资料可查看我个人介绍中的博客。如果你觉得这份由我亲自制作的思维导图对你有所帮助,不要吝惜你的点赞,这是我创作的最大动力。
编辑于2021-06-29 20:14:43整理了力扣上面的算法题目的主要思路和代码, 此思维导图会持续更新中, 购买的朋友可通过我个人介绍中的博客加我好友, 我会持续提供更新, 也可和我一起探讨算法问题。
整理了东南大学的英语学术写作的考试重点内容, 旨在培养学生的英语学术写作能力,帮助学生在初步掌握写作技巧的基础上把学术论文写得更加规范,为毕业论文的写作及今后学术研究打下坚实基础。
根据B站莫烦的视频教程整理而来, Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
社区模板帮助中心,点此进入>>
整理了力扣上面的算法题目的主要思路和代码, 此思维导图会持续更新中, 购买的朋友可通过我个人介绍中的博客加我好友, 我会持续提供更新, 也可和我一起探讨算法问题。
整理了东南大学的英语学术写作的考试重点内容, 旨在培养学生的英语学术写作能力,帮助学生在初步掌握写作技巧的基础上把学术论文写得更加规范,为毕业论文的写作及今后学术研究打下坚实基础。
根据B站莫烦的视频教程整理而来, Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
Pandas
1.基本介绍
1.比较
用python的列表和字典来作比较, 那么可以说Numpy是列表形式的,没有数值标签,而Pandas就是字典形式,有数值标签
2.Series
1.Series的字符串表现形式为:索引在左边,值在右边,自动创建一个0到N-1(N为长度)的整数型索引
3.DataFrame
1.DataFrame是一个表格型的数据结构,它包含有一组有序的列,每列可以是不同的值类型
2.DataFrame既有行索引也有列索引, 它可以被看做由Series组成的大字典
4.DataFrame简单运用
1.df['b']
根据每一个不同的索引来挑选数据, 比如挑选 b 的元素
2.pd.DataFrame(np.arange(12).reshape((3,4)))
创建一组没有给定行标签和列标签的数据
3.pd.DataFrame( {'A' : 1., 'B' : pd.Timestamp('20130102'), 'C' : pd.Series(1,index=list(range(4)),dtype='float32'), 'D' : np.array([3] * 4,dtype='int32'), 'E' : pd.Categorical(["test","train","test","train"]), 'F' : 'foo'}) 这种方法能对每一列的数据进行特殊对待
4.df2.dtypes
查看数据中的类型
5.df2.index
查看每行的索引和类型
6.df2.columns
查看每列的索引和类型
7.df2.values
只想看所有df2的值
8.df2.describe()
查看数据的总结,只会对数值形式的数字进行总结,自动忽略其他形式的数据
9.df2.T
翻转数据
10.df2.sort_index(axis=1, ascending=False)
1.对数据的 index 进行排序
2.axis=1对列索引排序,=0对行索引排序; ascending=False逆序, =true正序
11.df2.sort_values(by='B')
对B列的数据值排序输出
2.选择数据
1.简单的筛选
1.选取某行/列
1.df['A']
直接传入字符串A
2.df.A
直接选择A列
2.跨越多行/多列
1.df[0:3]
切片,左闭右开,不包含3
2.df['20130102':'20130104']
选择标签,左闭右闭,包含两个标签
2.根据纯标签 loc
1.df.loc['20130102']
选择某列
2.df.loc[:,['A','B']]
冒号代表所有行
3.df.loc['20130102',['A','B']]
3.根据纯位置/数字 iloc
1.df.iloc[3,1]
选一个
2.df.iloc[3:5,1:3]
连续选
3.df.iloc[[1,3,5],1:3]
跨行选
4.根据混合的这两种 ix
1.df.ix[:3,['A','C']]
选择'A'和'C'的两列,并选择前三行的数据
5.通过判断的筛选
df[df.A>8]
3.设置值
1.根据位置设置 loc 和 iloc
1.df.iloc[2,2] = 1111
2.df.loc['20130101','B'] = 2222
2.根据条件设置
1.df.B[df.A>4] = 0
更改B中的数, 而更改的位置是取决于 A 的
3.按行或列设置
1.df['F'] = np.nan
对整列做批处理
4.添加数据
1.df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130101',periods=6))
长度必须对齐
4.处理丢失数据
1.pd.dropna()
直接去掉有 NaN 的行或列
df.dropna( axis=0, # 0: 对行进行操作; 1: 对列进行操作 how='any' # 'any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop )
2.pd.fillna(value=0)
将 NaN 的值用其他值代替, 比如代替成 0
3.pd.isnull()
1.(整个表格)判断是否有缺失数据 NaN, 为 True 表示缺失数据
2.np.any(df.isnull()) == True
数据量较大时,检测在数据中是否存在 NaN, 如果存在就返回 True
5.导入导出
1.读取csv
data = pd.read_csv('student.csv')
2.将资料存取成pickle
data.to_pickle('student.pickle')
3.其他格式类似
csv、excel、json、html与pickle
6.合并 concat
1.axis (合并方向)
1.axis=0是预设值(纵向合并)
2.res = pd.concat([df1, df2, df3], axis=0)
2.ignore_index (重置 index)
res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
3.join (合并方式)
1.join='outer'为预设值,依照column来做纵向合并,有相同的column上下合并在一起,其他独自的column个自成列,原本没有值的位置皆以NaN填充
2.inner原理同上个例子的说明,但只有相同的column合并在一起,其他的会被抛弃
3.res = pd.concat([df1, df2], axis=0, join='outer')
4.join_axes (依照axes值 合并)
1.res = pd.concat([df1, df2], axis=1, join_axes=[df1.index])
2.依照'df1.index'进行横向合并
5.append (添加数据)
1.append只有纵向合并,没有横向合并
2.res = df1.append(df2, ignore_index=True)
7.合并 merge
1.依据一组key合并
1.res = pd.merge(left, right, on='key')
2.依据两组key合并
0.合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner'
1.left: 根据left的关键词来合并,没有的用NaN填充
2.right: 根据right的关键词来合并,没有的用NaN填充
3.outer: 合并所有的项,没有的用NaN填充
4.inner: 只合并关键词相同的项,其他的舍去
3.indicator
1.indicator=True会将合并的记录放在新的一列
2.res = pd.merge(df1, df2, on='col1', how='outer', indicator=True)
默认名称_merge
3.res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_column')
自定义名称
4.依据index合并
1.res = pd.merge(left, right, left_index=True, right_index=True, how='outer')
2.依据左右资料集的index进行合并,how='outer',并打印出
5.解决overlapping命名重复的问题
1.使用suffixes后缀解决overlapping的问题
2.res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='inner')
8.plot 出图
1.线性图
1.使用Matplotlib简写的 plt.plot(x=, y=),把x,y的数据作为参数存进去
2.data本来就是一个数据,所以我们可以直接plot: data.plot()
2.散点图
1.ax = data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class1')
2.data.plot.scatter(x='A',y='C',color='LightGreen',label='Class2',ax=ax)
3.可以再画一个在同一个ax上面,选择不一样的数据列,不同的 color 和 label
主题