- 20210216
我毕设是在做什么呢,简而言之,就是用python对数据集进行初步清洗、特征提取、设计分类器训练样本、预测测试样本的特征。emm目前很痛苦……
然后记录一下从不知道到知道了的知识
查看python已安装的库
pip list
升级pip版本
c:\anaconda3\python.exe -m pip install --upgrade pip
查看可更新的第三方库
pip list --outdated
更新安装某一库
pip install --upgrade XXX
将pandas类型的变量数据保存至本地csv文件中,并用当地时间命名文件名
from datetime import datetime #当初很疑惑为什么from和import同一个名字,后来删掉from,emm立马报错
fn = "C:/a.pythondata/news(7146-242)_{}.csv".format(format(datetime.now(), '%Y_%m_%d_%H_%M'))
group_df.to_csv(fn, index = False, sep=',', encoding='gb18030')
- 20210217
用rename()函数修改pandas类型变量的列名
常规的一个一个来修改
df.rename(columns={'before':'after'},inplace=True)
如果一个变量的列名要完全copy另一变量列名,可尝试用循环
i=min
while i<max:
after=before.rename(columns={before.columns[i]:copytest.columns[i]})
i=i+1
第一次循环完输出after.head()显示列名还是没有被修改的,可以考虑在rename()函数内加上inplace=True,即
i=min
while i<max:
after=before.rename(columns={before.columns[i]:copytest.columns[i]},inplace=True)
i=i+1
再运行一次after.head()会报错 AttributeError: 'NoneType' object has no attribute 'head'(但此时输出before.head()会显示修改成功),然后回去把inplace=True删掉,再运行一次,再输出after.head(),此时,列名成功被修改。先不考虑为什么会这样,反正屡试不爽[捂脸]。
-20220927
pandas的一些常用函数
防止自己忘记,还是记录一下好了
重新修改日期的表现形式并转换为日期格式
df['noted_date'] = df['noted_date'].apply(lambda x: x.split(' ')[0][-4:] + '-' + x.split(' ')[0][3:5] + '-' + x.split(' ')[0][:2] + ' '+ x.split(' ')[1])
df['noted_date']= pd.to_datetime(df['noted_date'])
#按日期排序
df.sort_values(['noted_date'],inplace = True)
查看所有字段的次数、是否为空、类型
df.info()
查看目标字段的最大值最小值等信息
df.describe()
筛选某个字段等于某个值的列
df_in = df[df["out/in"] == 'In']
去除重复项
df_in = df_in.drop_duplicates(['noted_date'])
#df_in = df.drop_duplicates(subset = ['noted_date','temp'])
重置索引
df_in.reset_index(drop = True)
一些很有用的学习网址
sklearn (scikitlearn.com.cn)
Pandas 数据清洗 | 菜鸟教程 (runoob.com)