pandas——其他函数

pandas的其他函数

修改日期为统一格式:pd.to_datetime(YY-MM-DD)**

to_datetime(arg, errors=‘raise’, dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin=‘unix’, cache=True)
其中需要注意,format=’%Y%m%d’,为固定格式,不能修改Y,m,d大小写,例如format=’%Y年%m月%d日’也是一种和‘2019年8月4日’匹配的形式;若出现格式不匹配的情况,可以在报错中查看修改。且这些只是返回了视图,并没有修改原数据,可以将这个视图数据赋值给别的变量

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',	na_values=['null','None'])
print(pd.to_datetime(df["date"],format='%Y/%m/%d'))
'''
0   2018-03-01
1   2018-04-01
2   2018-03-01
3   2018-05-01
4   2017-03-01
5   2017-04-01
6   2017-05-01
7   2019-03-01
8   2019-04-01
9   2019-05-01
Name: date, dtype: datetime64[ns]
'''

读取csv文件,pd.read_csv ()

read_csv(filepath_or_buffer: Union[str, pathlib.Path, IO[~AnyStr]], sep=’,’, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=b’.’, lineterminator=None, quotechar=’"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
主要参数含义:
filepath_or_buffer: 打开的 文件的路径和文件名
sep: 分割符
**delimiter:**定界符,若指定,则sep属性失效
**header:**为整数,指定哪一行为表头,默认为0(第一行)
**prefix:**给列明前加字符串前缀
**encoding:**表示数据读取的编码方式
**skiprows:**跳过的行数
**na_values:**需要忽略的字符串,中文字符串无法忽略

字符串替换函数 df[‘某一列的属性名’].str.replace(‘旧值’,‘新值’)

将新的字符串代替旧的字符串

import pandas as pd
import numpy as np 
df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'])
	print(df)
print(df['价格'])
#将字符串的最后一位舍去,且转换为float型![在这里插入图片描述](https://img-
print(df['价格'].str[:-1].astype('float'))
df['名字']=df['名字'].str.replace('大山','错误')
print(df['名字'])

在这里插入图片描述

对出现数据次数统计,df[‘某一列的属性名’].value_counts()

df.dtypes,返回df数据的每个列的数据类型

df.describe(include=’ '),返回对数据总体描述

包含数量,均值,标准差,最小值,分位数,最大值
include值的含义:
**默认时,**返回只对数值型数据统计;
**object:**表示对字符数据统计;
**all:**表示对所有数据统计

import pandas as pd
import numpy as np 

# print(help(pd.read_csv))

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'])
print(df)

print(df['价格'].value_counts())

print(df.dtypes)

print(df.describe())

print(df.describe(include='object'))
print(df.describe(include='all'))

在这里插入图片描述

pd.datetime.today(),返回现在时间

可以显示如下时间,也可使用pd.datetime.today().year(或month,hour,minute,)访问今天的年,月,日

print(pd.datetime.today())
#2020-03-17 07:33:50.063112

使用apply隐藏部分数据

下面的程序,将11位电话号码的第四位到第7位用星号代替

print(df['电话'].apply(lambda x:x.replace(x[3:7],'****')))

使用df.sample(n=,replace=)抽样数据

从数据中replace(false不放回)抽取n个数据

插入一列计算数据,列之间相乘np.prod

先读取数据,后对数据进行随机选择,然后对数据处理

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'],\
	dtype={'电话':str,})
print(df)
data=df.sample(n=5,replace=False)
data['总价']=data[['单价','数量']].apply(np.prod,axis=1)
print(data[['单价','数量','总价']])

在这里插入图片描述
从上图可以看出,没有对索引进行初始化,并且添加计算了总价

扫描二维码关注公众号,回复: 10544687 查看本文章

求取数值变化率的函数group_data[‘总价变化率’].pct_change()

分类后的数据,某一列数据的变化率(浮点型),

import pandas as pd
import numpy as np 

df=pd.read_csv('my_csv_date.csv',encoding='gb2312',\
	na_values=['null','None'],\
	dtype={'电话':str,})
print(df)
data=df.sample(n=5,replace=False)
data['总价']=data[['单价','数量']].apply(np.prod,axis=1)
group_data=data.groupby(by='date').sum()
group_data['总价变化率']= group_data['总价'].pct_change()
print(group_data)

在这里插入图片描述
通过设置将date列作索引的分组,并将数据求和之后再对求和后的数据计算出变化率

移动平均group_data[‘总价’].rolling(3).mean()

表示几个数据的移动平均group_data指的是按照自己要求分组的数据,总价是数据表中想要滚动计算其中一列中某几行数据的平均(mean),这里是3行,接着上一个程序

group_data['rolling']=group_data['总价'].rolling(3).mean()
print(group_data[["单价","数量","总价","rolling"]])

在这里插入图片描述
可以发现前两行没有数据,因为这是3行计算平均值

将某列整体向下平移group_data[‘总价’].shift(1)

上面表示,将总价的一列整体向下移动1位,整体数据图,参考前面较多数据的图,从下图知道,总价列下移一格,第一行无数据
当shift()的参数是负值时,表示向上平移

print(group_data[["单价","数量","总价"]])
group_data['总价']=group_data['总价'].shift(1)
print(group_data[["单价","数量","总价"]])

在这里插入图片描述

使用.shift()函数实现.pct_change()的功能

计算方式:前一个数据减去后一个数据后,再除以前一个数据

group_data['per_pct']=(group_data['总价'].shift(1)-group_data['总价'])/group_data['总价'].shift(1)
print(group_data['per_pct'])
print(group_data['总价'].pct_change())

在这里插入图片描述

发布了70 篇原创文章 · 获赞 1 · 访问量 2423

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104862466