2019.12.9
1、pandas时间格式转换
pd.to_datetime(“数据框.日期”,format = “%Y%m%d”)
2、计算时先数据框在后续跟其他计算
eg:
df.groupby("month").order_amount.sum().plot(title = "每月消费总金额")
3、作图不显示中文、负数
处理方式:
import matplotlib.pyplot as plt
import matplotlib as mpl
plt/mpl.rcParams['font.sans-serif']=['Simhei'] #解决中文显示问题,目前只知道黑体可行
plt/mpl.rcParams['axes.unicode_minus']=False #解决负数坐标显示问题
4、去重函数:drop_duplicates
DataFrame.drop_duplicates(sub = None,kee,inplace)
eg:
df. drop_duplicates(sub = [“b”],kee=”first”,inplace=False)
参数:
subset : column label or sequence of labels, optional
用来指定特定的列,默认所有列
keep : {‘first’, ‘last’, False}, default ‘first’
删除重复项并保留第一次出现的项
inplace : boolean, default False
是直接在原来数据上修改还是保留一个副本
5、散点图要给到x、y轴
eg:
ax = df.plot.scatter(x='a', y='b', color='b', label='Group 1')
df.plot.scatter(x='c', y='d', color='g', label='Group 2')
6、query-字符串表达式查询
df.query(expr,inplace = False,** kwargs )# 使用布尔表达式查询帧的列
参数:
expr:str要评估的查询字符串。你可以在环境中引用变量,在它们前面添加一个'@'字符 。@a + b
inplace=False:是否修改数据或返回副本
kwargs:dict关键字参数
返回:DataFrame
注意:
1、query后面只支持string形式的值
2、可以用query来过滤数字
12.12.10
1、重命名函数rename
df1.rename (columns={'c':'D','b':'C'} , inplace=True)
eg:
rfm.rename(columns = {"order_products":"F","order_amount":"M"},inplace = True)
2、去除时间单位np.timedelta64(1,"D")
Timestamp():表示时间轴上的一个时刻
举例:调用Timestamp.now()获取当前时间
Period():表示一个标准的时间段。例如某年、某月、某日、某小时等。时间的长短由freq决定
举例获得包含当前时间的时间段:now_day=pd.Period.now(freq="D")
Timedelta():两个时间的间隔
3、count()、values_counts()、size()函数
value_counts():是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。
count() :方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
size():函数是返回分组大小的Series
4、错位函数shift
df.shift(periods=1, freq=None, axis=0)
period:表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。
freq: DateOffset, timedelta, or time rule string,可选参数,默认值为None,只适用于时间序列,如果这个参数存在,那么会按照参数值移动时间索引,而数据值没有发生变化。
axis: 轴向
注意:
1/当period为正时,默认是axis = 0轴的设定,向下移动
2/当axis=1,沿水平方向进行移动,正数向右移,负数向左移
3/当period为负时,默认是axis = 0轴的设定,向上移动
5、applymap函数
apply:作用在dataframe的一行或一列上
applymap: 作用在dataframe的每一个元素上
要对数据框(DataFrame)的每一个数据进行操作时用applymap()
6、匿名函数lambda使用
f = lambda x,y,z:x+y+z
冒号:之前的x,y,z表示它们是这个函数的参数。
匿名函数不需要 return 来返回值,表达式本身结果就是返回值。
匿名函数调用:直接赋值给一个变量,然后再像一般函数调用、
7、str.extract 正则提取数据
str.extract():可用正则从字符数据中抽取匹配的数据,只返回第一个匹配的数据。 \d+.?\d*/\d+
\d+ :匹配多个数字字符串
注意,正则表达式中必须有分组,只是返回分组中的数据,如果给分组取了名称,则该名称就是返回结果中的字段名。
Series.str.extract(pat, flags=0, expand=None)
参数:
pat : 字符串或正则表达式
flags : 整型,
expand : 布尔型,是否返回DataFrame (如果为True,则返回DataFrame,每个捕获组一列。如果为False,如果有一个捕获组,则返回系列/索引;如果有多个捕获组,则返回DataFrame)
Returns: 数据框dataframe/索引index
正则表达式语言 - 快速参考
df['floor_level']=df.floorlevel.str.extract('(\D+)/')
df['floor']=df.floorlevel.str.extract('/(.*)层')
df.drop('floorlevel',axis=1,inplace=True)
df['floor']=df['floor'].astype(float)
df['construction_time']=df.construction_time.str.extract('(\d+)年建')
df['construction_time']=pd.to_datetime(df.construction_time,format='%Y').values.astype('datetime64[Y]')
8、分割
df1 = pd.concat([df,df['floor'].str.split('/',expand = True)],axis = 1)
df1.head()
9、matplotlib动态图subplots()和subplot()不同及参数
当sharex = True, sharey = True时,生成的四个ax的所有坐标轴用有相同的属性
matplotlib动态图subplots()和subplot()不同及参数
10、数据导出
df.to_csv("文件名")
11、isin()函数
isin()接受一个列表,判断该列中元素是否在列表中
df.isin({'某列':[条件],'某列':[条件]})
反函数就是在前面加上 ~