Pandas使用指南
-
pandas修改数据
>>> df.loc[1,'name'] = 'aa' #修改index为‘1’,column为‘name’的那一个值为aa。 >>> df.loc[1] = ['bb','ff',11] #修改index为‘1’的那一行的所有值。 >>> df.loc[1,['name','age']] = ['bb',11] #修改index为‘1’,column为‘name’的那一个值为bb,age列的值为11。
-
csv 保存数据乱码解决
df.to_csv('test.csv',encoding='utf_8_sig')
-
更换索引
df['index'] = list(range(1000)) df = df.set_index(['index'])
-
重置索引
# drop = False默认保留原来的索引,drop = True删除原来的索引,inplace = True在原来的数据上做更改 new_df3.reset_index(drop=False,inplace=False)
-
更换列名
# 原bg_id 更换为lawyer_id df.rename(columns={ 'bg_id':'lawyer_id'},axis=1)
-
DataFrame设置索引
# dataframe 新增一列 data3['index'] = range(1,75164) # 设置索引 data3.set_index(['index'])
-
将DataFrame存入到MongoDB中
# DataFrame存入mongodb import json conn2 = MongoClient('localhost',27017) db2 = conn2['company'] coll2 = db2['company_qinquan'] # data3 为dataframe coll2.insert(json.loads(data3.T.to_json()).values())
-
pandas 时间类型数据
def pandas_time_stamp(cls,str_time): ''' 字符串类型时间转pandas的pandas._libs.tslibs.timestamps.Timestamp类型''' time_array = time.strptime(str_time, '%Y-%m-%d %H:%M:%S') time_stamp = time.mktime(time_array) str_time_ = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_stamp)) # return pd.Timestamp(str_time_).date() # 获取年月日 return pd.Timestamp(str_time_) # 获取年月日时分秒
-
NaN类型的数据(数值为空)
from math import isnan # 筛选出NaN值的数据,只对浮点型数据有效,对整数类型无效 df[df['A'].isnull()] # 判断是否是NaN isnan(x) # True or False
-
NaT 类型的数据(时间为空)
```python
# 判断类型是否为空
pd.isna(x) # True or False
```
-
对某一列空值进行填充
df_user3['tag_type'].fillna(0,inplace=True)
-
df 更换某一列的数据类型
# df[[‘col_name’]]= df[[‘col_name’]].values.astype(int/float/str) # 更换成整数类型 df['tag_type']=df['tag_type'].values.astype(int)
-
pandas 拼接多个相同列名的数据帧
# 是一个列表类型的参数-元素是多个数据帧 end_df = pd.concat([df1,df2..........])
-
删除行
# 筛选出a列空行的索引 index = df[df['A'].isnull()].index # 将其删除,删除行需指定axis=0 ,为行 df.drop(labels=index ,axis=0, inplace=True)
-
删除列
# 删除列,labels可以是列代表删除多列,也可以指定列名删除一列, 需指定axis=1 ,为列 df.drop(labels=['group_chat_count','private_chat_send_count'],axis=1, inplace=True)
-
操作数据帧两列生成新的一列
# 处理函数 def process(date_time, pay_time): flag = 0 if not pd.isnan(date_time) and not pd.isnan(pay_time): flag = 1 return flag # df 调用处理函数操作两列生成新的列 df['transform_num'] = df.apply(lambda row: process(row['data_time'], row['pay_time']), axis=1)
-
将df 转化成字典类型数据
# 转化成字典嵌套字典形式 df = df.to_dict() # 输出 { 'camp_id': { 0: 100695,1: 100695, 2: 100695,3: 100695,4: 100695, 5: 100695,6: 100695}, 'term_id': { 0: 105712,1: 105712,2: 105712,3: 105712,4: 105712,5: 105712,6: 105712} } ----------------------------------------------------------------------------------- # 转化成字典嵌套列表 df = df.to_dict(orient = 'list') # 输出 { 'camp_id': [100695, 100695, 100695, 100695, 100695, 100695, 100695], 'term_id': [105712, 105712, 105712, 105712, 105712, 105712, 105712] }
-
将pandas数据帧转换成矩阵
print(df4) ----------------------------------------------------------------------------------------------------------------------------- 食品 互联网 电子电器 文创 工程机械 餐饮娱乐 其他 连锁经营 建材家居 药品 ... 《中华人民共和国劳动法》 《最高人民法院关于民事诉讼证据的若干规定》 《中华人民共和国种子法》 《中华人民共和国公司法》 《中华人民共和国劳动合同法》 《中华人民共和国民法通则》 《中华人民共和国行政许可法》 《中华人民共和国公共图书馆法注释版》 《最高人民法院关于确定民事侵权精神损害赔偿责任若干问题的解释》 money 0 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 4 0 0 1 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 127748 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 127749 0 0 0 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 127750 0 0 0 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 127751 0 0 0 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 127752 0 0 0 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 1 ----------------------------------------------------------------------------------------------------------------------------- import numpy as np import pandas as pd # 将dataFrame转换成矩阵 matrix = np.asmatrix(df4.values) print(matrix) ----------------------------------------------------------------------------------------------------------------------------- matrix([[1, 0, 0, ..., 0, 0, 1], [1, 0, 0, ..., 0, 0, 1], [1, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 1], [0, 0, 0, ..., 0, 0, 1]], dtype=int64)