Data Analysis

Python每日学习知识点

2019-12-17  本文已影响0人  戈小蓓

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 来返回值,表达式本身结果就是返回值。
匿名函数调用:直接赋值给一个变量,然后再像一般函数调用、

python的匿名函数lambda解释及用法

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({'某列':[条件],'某列':[条件]})

反函数就是在前面加上 ~

上一篇下一篇

猜你喜欢

热点阅读