数据分析(3)
索引和数据筛选
在我们导入数据将其存储在data变量中后,接下来就要开始对其进行操作了,要对指定的数据进行操作,首先要在一堆数据中确定它,因此需要索引
import pandas as pd
data = pd.read_csv("path")
列索引
方法:
访问一列数据
data["columns"]
访问多列数据:
data[["columns_1","colulmns_2]]
.loc属性
访问DataFrame对象中的.loc属性可以按照index访问行数据
内容比较简单,学会怎么调用即可,在此直接用代码说明
data.loc[index] #访问某一行
data.loc[起点index的值:结束index的值] #访问连续的某几行,左闭右闭
data.loc[[index1,index2,index3,...]] #访问不连续的某几行
data.loc[index,columns] #访问单个元素
data.loc[index(切片或列表),columns(切片或列表)] #访问多个元素
.iloc属性
访问DataFrame对象中的.iloc属性可以按照行位置访问行数据
基本与.loc相同,只需注意,1.loc是按照index访问,iloc是按照行位置访问
2.在访问连续的几行时,loc是左闭右闭 ,iloc是左闭右开
.iloc[index] #访问某一行
.iloc[index0(起始),index1(结束)] #访问连续的某几行,左闭右开
.iloc[[index1,index2,index3...]] #访问不连续的某几行
.iloc[index,columns] #访问单个元素
data.iloc[index(切片或列表),columns(切片或列表)] #访问多个元素
布尔索引
1.有一个判断条件
条件表达式:
pandas通过条件表达式得到一个布尔型Series,再通过这个Series来索引数据
常见的比较运算符:==、>、<、>=、<=、!=
常见的逻辑运算符:&、|、~
data[data["cutdown_price]>0]
2.有两个判断条件
过程等同于先进行第一个判断,然后再此结果的基础上再进行第二个判断,依次类推
data[(data["cutdown_price"]>0) & (data["post_fee"]>0)]
格式转换和时间类型
时间类型
datetime 具体时间点,比如2024/04/20 0:03
period 时间区间,比如2024年三月十八日一整天
timedelta 时间间隔,比如3days,2 months
字符串转时间
pd.to_datetime()函数,将参数中这一列的数据,转化成时间格式
df['creat_time'] = pd.to_datetime(df['creat_time'])
时间转字符串
.strftime()函数将某一列时间类型的数据,转换为字符串类型,并变成"年-月"的格式
dt.后缀 datetime类型的数据要先通过后缀.dt转化
格式化输出 %Y代表时间的年,%m代表时间的月,%d代表时间的日。时间以外的其他的内容可以任意编辑。
df['pay_time'] = df['pay_time'].dt.strftime('%Y-%m')
格式转换函数
astype()函数,里面的参数是需要转化成为的数据类型。可以实现字符串、整型、浮点型、布尔型数据的相互转换。
1.整型、浮点型数据,可以直接使用.astype(str)函数。将数据类型转化为字符串类型。
2.字符串数据,当数据是数字(整数、小数都可以)时,可以使用.astype(float)函数,否则将会报错(参数传(int)会报错)
3.字符串数据,仅当数据是整数数字时,才能使用.astype(int)函数,否则将会报错。
4.浮点型数据,可以直接使用.astype(int)函数,使用后数据将只保留整数部分。
5.整型数据,可以直接使用.astype(float)函数,使用后数据将用0补充为1位小数。
6.整型、浮点型数据,可以直接使用.astype(bool)函数。
7.如果数据是整型0、浮点型0.0,则会转化为布尔值False;如果数据是非0,则会转化为布尔值True。
统计函数
1.求均值:.mean()
2.处理输出数据:.round()函数取整
round(n)三种情况
(1).n>0,表示保留小数点后n位小数
(2).n=0,取整
(3).n为负,-1,-2...依次保留到十位数,百位数
3.多列统计data[[传入列表]].mean()
import pandas as pd
data = pd.read_csv(r"D:\Programme\Python_programme\数据分析\素材\电商数据清洗.csv")
pay_mean = data['payment'].mean()
print(pay_mean.round())
print(pay_mean.round(2))
print(data[["payment","price","cutdown_price"]].mean())#多列统计
「安静」要你真正进入你在做的事情,它让每个时刻都变得足够重要,让你不必通过别人来过自己的生活。 ---艾林·卡格