数据分析在社会和经济生活中扮演着越来越重要的角色。因此,我在接下的几篇blog中阐释比较常用的数据分析的代码,如有不妥,欢迎指正!
数据分析第一个常用的库是pandas。 相比较numpy和matplotlib, 在产生相同效果的同时,pandas 体现出强大的API 功能,获取数据的途径更加便捷,所以备受推崇。
首先,我们来了解一下 pandas 中 DataFrame这个类的一些基本情况。DataFrame来源于R语言的data.frame类,因此自身功能多样。
其次,介绍一下DataFrame对象的数据定位和赋值方法。
常见注释符号说明:<> 里面是变量,args; op 代指operator,逻辑运算符。
一. DataFrame对象的数据定位
(1) 方法一: pandas.DataFrame().loc[]方法 【基本逻辑:先index后column】index指的是行索引,column则为列。
首先建立一个DataFrame对象,
import pandas as pd
import numpy as np
df = pd.DataFrame([[1,2,3,4],[3,4,3,4],[5,6,7,8]], index= ['number','post','ID'], columns = ['a','b','c','d'])
print(df)
得到结果如下
a b c d
number 1 2 3 4
post 3 4 3 4
ID 5 6 7 8
应用一:利用loc[]方法,得到某一个tuple(tupel可以理解为行数据)
如:
print(df.loc['number'])
得到结果如下
a 1
b 2
c 3
d 4
应用二:获取某些index,把index写到一个list中;利用loc[[,]]方法,得到某些tuple
print(df.loc[['number', 'post']])
得到结果如下
a b c d
number 1 2 3 4
post 3 4 3 4
应用三:获取某些index,把index写到一个list中,同时利用切片方法;利用loc[:]切片方法,得到某些tuple
print(df.loc['number':'ID'])
得到结果如下
a b c d
number 1 2 3 4
post 3 4 3 4
ID 5 6 7 8
应用三拓展:类似应用三,利用loc[:, [,]]切片方法,得到某些满足index和column条件的tuple
print(df.loc['number':'ID',['a','c']])
得到结果如下
a c
number 1 3
post 3 3
ID 5 7
应用四:利用loc[df[] op] 对满足column条件的tuple进行筛选
print(df.loc[df['b']>2,['c','a']])
得到结果如下
c a
post 3 3
ID 7 5
应用四拓展:利用loc[lambda函数方程] 对满足column条件的tuple进行筛选,注意lambda后面的变量为DataFrame对象
print(df.loc[lambda x: x.a >3,:])
得到结果如下
a b c d
ID 5 6 7 8
(2) 方法二: pandas.DataFrame().iloc[]方法 【基本逻辑:先index后column, 但iloc内部输入的是数值,而不是索引】
iloc[] 与 loc[] 的应用极其相似,以上四个应用方法完全对变量args的处理完全相同。
这里我只列举一个取前2行,第2列的例子:
print(df.iloc[:2,1])
得到结果如下
number 2
post 4
(3) 方法三: pandas.DataFrame()[]方法 【基本逻辑: 根据列名(attribute)直接取满足列要求的tuple数据】
print(df[['a','c']])
得到结果如下
a c
number 1 3
post 3 3
ID 5 7
二. DataFrame对象的数据修改 【基本逻辑: 先定位,再赋值】
下边举一个简单例子:把index为number的行数值转化为-1, 同时对attribute(列名)为a的所有大于0的tuple(行数据)赋值为-2。
df.loc['number'] = -1
df.loc[df['a']>0] =-2
print(df)
得到结果如下
a b c d
number -1 -1 -1 -1
post -2 -2 -2 -2
ID -2 -2 -2 -2
三. DataFrame对象的apply方法应用 【基本逻辑: 对每行/每列做函数运算】
方法参数:apply(func,
axis=0是对每列/axis=1是对每行,
raw=False默认为Series类型/raw=True是ndarray类型,
result_type=None, args=())
最后举个栗子帮助大家理解:
对每行元素做累加运算,最后得到一列。
代码如下:
print(df.apply(np.sum, axis = 1))
得到结果如下
number 10
post 14
ID 26
写在最后,今天的总结就到这里;如果觉得有帮助,请点个赞!
Original: https://blog.csdn.net/dylan_young/article/details/111391224
Author: Efred.D
Title: Python数据分析摘要(1)- DataFrame数据定位,筛选和修改
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739383/
转载文章受原作者版权保护。转载请注明原作者出处!