1.透视表的使用
Pandas透视表(pivot_table)详解
table = pd.pivot_table(df,index=["Manager","Status"],columns=["Product"],values=["Quantity","Price"],
aggfunc={"Quantity":len,"Price":[np.sum,np.mean]},fill_value=0)
和groupby的区别:
pivot_table()方法是指定相应的列分别作为行标签和列标签,并指定相应的列作为值,然后重新生成一个新的DataFrame对象,这样的好处是使得数据更加的直观和容易分析,俗称数据透视;而groupby()方法是指定相应的列进行分组,把这列中具有相同值的行分为同一组,这个过程称为分组,返回一个groupby对象,一般的,分组之后会伴有聚合运算,即对每组进行需要的聚合运算(比如求和求积等)。因此,pivot_table()方法是为了让数据重新排列组合,使其更直观,数据透视;而groupby()方法则是对数据进行分组聚合运算;
关于columns的理解:
我认为pivot_table中一个令人困惑的地方是“columns(列)”和“values(值)”的使用。记住,变量“columns(列)”是可选的,它提供一种额外的方法来分割你所关心的实际值。然而,聚合函数aggfunc最后是被应用到了变量“values”中你所列举的项目上。(用白话来说,就是说columns所针对的列名,其可能有多个值,例如上面链接中的columns取product,而product包括CPU、Memory、Software等多个值,因此当设定了columns后,value就需要对product中的各个出现的值进行分别的统计,因此对不同的值,price会有对应的一列存在)
2.pandas中关于set_index() 和 reset_index() 的用法
set_index和reset_index
前者是将一列设定为序号,后者是将分组后的表还原(一般用于groupby统计之后的还原)
3.DataFrame列名的修改
修改列名
pandas 修改 DataFrame 列名
4.drop_duplicates()去重方法
Pandas之drop_duplicates():去除重复项
5.数据根据条件进行筛选操作
Pandas 筛选数据
6.如何快速查找并统计pandas数据框中每一列有多少缺失值(nan)
df.isnull().sum()
7.用pandas处理大型CSV文件(读取指定行数、列,或采用chunk_size)
[1]用pandas处理大型CSV文件
[2]你的数据根本不够大,别老扯什么Hadoop了
import pandas as pd
f = open('E:/学习相关/Python/数据样例/用户侧数据/test数据.csv')
reader = pd.read_csv(f, sep=',', iterator=True)
loop = True
chunkSize = 100000
chunks = []
while loop:
try:
chunk = reader.get_chunk(chunkSize)
chunks.append(chunk)
except StopIteration:
loop = False
print("Iteration is stopped.")
df = pd.concat(chunks, ignore_index=True)
print(df)
8.DataFrame的索引
DataFrame中loc、iloc、ix的区别
区别:就是说loc是根据具体名称索引的,iloc是根据序号索引的,而ix则是两者都可以实现;
10.pycharm实现批量重命名
点击你要改的单词,右键refactor ->rename
11.详解pandas库的pd.merge函数
on、how
13.在Dataframe中的列中使用NaT过滤所有行(实际就是筛出所有该列为NaT的行)
14.记录一个耗时一天的bug。。。
单个值减去一列值,除去这一列的第一个值外,其他都是NAN。。也就是说,直接相减是没有预期中的广播效果的。。
要实现这一效果,需要如下操作:
action=pd.read_csv(path + 'Actions_table.csv')
a = pd.to_datetime('2018-04-02 23:59:59') #单个值
b = pd.to_dateframe(action.action_time) #一列值
c = b.apply(lambda x:a-x)
追加:原来是windows下抽风了。。linux机器上就没有问题。。这样分析的话,应该是windows下txt文件读取后的编码方式有问题。
15.分批读取以及处理大文件
数据处理:1 用pandas处理大型csv文件 2 使用Pandas分块处理大文件 3 分块读取
16.合并数据集
Pandas合并数据集(merge和concat)
17.pandas.DataFrame.sample函数抽样划分Pascal voc数据 训练集验证集测试集
18.如何对数据集随机抽样?
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
注:n是要抽取的行数,frac是抽取的比列,replace:是否为有放回抽样,random_state就是给定的随机种子,axis是选择抽取数据的行还是列,axis=0的时是抽取行,axis=1的时是抽取列。
19.关于groupby操作,本质上是分组,所以没有增加额外空间
import pickle as pic
读取pkl文件数据
file = open('train_ucs_fea' + out_name + str(file_temp) + '.pkl', 'rb')
data = pic.load(file)
file.close()
数据写入到pkl文件
file = open('uc_realtime_fea' + out_name + '.pkl','wb')
pic.dump(result,file)
file.close()
21.指标
23.lightgbm模型存取
模型存放
model_lgb.save_model('model_name.txt') #model_lgb为训练出来的模型
模型取用
import lightgbm as lgb
model_use=lgb.Booster(model_file='model_name.txt')
model_use.predict()
23.where函数的用法
pandas where函数用法
24.ceil函数的用法
np.ceil的用法
25.python中数据集划分函数StratifiedShuffleSplit的使用
分层抽样