``一些有关Pandas的零零散散小知识点的整理(也可以把它称为开始入门Pandas,我也是刚开始学,若有些许不对的地方,欢迎大家指正,感激不尽。)
Pandas就很像是Python里面的Excel表格,内含两个主要的数据结构。
Series(一维数组)
DataFrame(二维数组)
用到Pandas时经常会用到numpy,所以就一起导入。
一、Series(一个一维数组)
1.添加索引
2.提取元素的值、索引的值
当然,也可以单独提取单个元素的索引,并对其中的元素进行替换。
也可以对其中的某些值进行加减乘除运算,或者提取特定区间的元素(举例一个小于零)
3.取绝对值
4.给行和列取一个动听的名字。
二、DataFrame(一个二维数组)
1.同样可以对它的行和列取一个动听的名字。
2.取行和列的索引
3.二维数组的第二个定义的方式(与一开始写的无太大区别)
4.同样可以对整行和整列取名字
三、索引对象
1.一维的索引对象的更改。
先创建一个obj
在obj的基础上创建obj2,修改索引
在obj的基础上创建obj3、obj4,修改索引并且给上填充值(method中可给与的几个参数:‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None;
这其中:
pad/ffill:用前一个非缺失值去填充该缺失值
backfill/bfill:用下一个非缺失值填充该缺失值
None:指定一个值去替换缺失值)
这是不给填充值的效果
2.二维的索引对象的更改。
创建一个二维的df
df=DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['name','id','sex'])
{【注】:这其中用到了reshape方法,该方法和shape方法相似:
shape可以用来查看数据的样式,比如几行几列之类的。
reshape可以用来更改数据的样式,比如改成几行几列之类的。
1.shape:
a=np.array([1,2,3,4,5,6,7,8])
print(a.shape[0])#输出值是8,就是输出有多少个对象值
print(a.shape[1])#输出值是错误,因为已经超出范围了,这只是个一维的数组
a=np.array([[1,2,3,4],[5,6,7,8]])
print(a.shape[0])#输出值是2,外层有两个
print(a.shape[1])#输出值是4,内层有四个
2.reshape
修改成二维数组、三维数组。
其中用reshape修改后的元素所占的内存是同一位置
}
修改df这一二维数组的元素值
3.二维对象索引更改的另一方式
同样还是先创建一个二维对象
使用类似于SQL中的语句对二维对象中的元素进行排序
排序之后重置顺序
使其为新的序列
我们再创建一个二维对象
可以将列转化为行的索引,name这一列就转化为后面值的索引
按索引来查找值
重置回来
4.对行和列进行操作
添加一行数据
ignore_index=True
这个参数必须要添加,不然会报错,因为dataframe在使用append方法添加数据时,必须要设置name,设置name名称将会作为index的name。
而在多次使用append这个方法添加数据时,可能会出现相同的index,也要通过ignore_index=True这个参数来避免。
添加一列数据
删除行
删除列
关于axis:(这里我之前并不是太懂,在看了一篇博客之后,发现规律也不过如此。)
axis=1表示横轴,方向从左到右;axis=0表示纵轴,方向从上到下。当axis=1时,数组的变化是横向的,而体现出来的是列的增加或者减少。
其实axis的重点在于方向,不是行和列。当axis=1时,如果是求平均,那么是从左到右横向求平均;如果是拼接,那么也是左右横向拼接;如果是drop,那么也是横向发生变化,体现为列的减少。
只考虑方向,也就是axis=1为横向,axis=0为纵向。
在这个例子中也就是横向的class这一列减少了。
给行或者列修改一个美妙的名字。
我把这个例子贴上去只是为了弄清楚inplace这个参数的作用。
inplace这个参数的本意是可在原数据上修改。
当inplace=False或者不添加这个参数时,会直接返回new_df中的值,即,创建一个新的new_df,和复制粘贴类似。
当inplace=True时,是直接在原始的数据上进行修改。
5.算术运算
(1)一维的加减乘除运算都只对索引值相同的数据进行运算。
obj1=Series([1.1,2.2,3.3,4.4],index=['a','b','c','d'])
obj2=Series([2.2,3.3,4.4,5.5],index=['a','e','b','d'])
obj1 + obj2,obj1*obj2
(2)二维的加减乘除也只对横向、纵向索引值相同的数据进行运算
df1=DataFrame(np.arange(9).reshape(3,3),columns=['a','b','c'],index=['apple','tea','banana'])
df2=DataFrame(np.arange(9).reshape(3,3),columns=['a','b','d'],index=['apple','tea','coco'])
df1+df2,df1*df2
6.排序
obj1 = Series([-2,3,2,1],index=['d','a','b','c'])
升序(按照索引升序)
obj1.sort_index()
降序(按照索引降序)
obj1.sort_index(ascending=False)
升序(按照值升序)
obj1.sort_values()
降序(按照值降序)
如果是二维的DataFrame,则可以按照某一列的数值来对整体进行升序和降序
7.汇总与统计
from pandas import DataFrame
df = DataFrame(np.random.randn(9).reshape(3,3),columns=['a','b','c'])
这里面random.randn是返回一个或一组样本,具有标准正态分布。
(1)对二维的数据进行加和,axis=0是对纵向的每一列的数据进行加和,axis=1是对横向的每一列的数据进行加和。(默认axis=0)
(2)求二维数据的
count 数量
mean 平均值
std 标准差
min 最小值
25% 第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
50% 中位数
75% 同上类似
max 最大值
(3)求一维数据的唯一值和值计数
8.层次化索引
df = DataFrame(np.arange(16).reshape(4,4),
index=[['one','one','two','two'],['a','b','a','b']],
columns=[['apple','apple','orange','orange'],['red','green','red','green']])
索引某一列
这里无关于pandas的可视化,可视化得单独分出来写。
感谢阅读,
我是啊帅和和,一位大数据专业大三学生。