Pandas 数据的一些基本操作
一个很偶然的机会,主动出击挑战一个之前没有尝试过的新东西,在做的过程中需要处理一些csv文件的数据,以下是我总结的一些小方法,希望对和我一样的新手朋友们有所帮助,初次尝试,望路过的朋友有更好的方法可以留言补充,小弟在此谢过~🤝
1. 读取文件的某一列并追加到另一个文件中
import pandas as pd filename = '/Users/nova.li/Desktop/workspace/对齐数据/6w_risk_date_merge.csv' df1 = pd.read_csv(filename) #设置索引从1开始 df1.index = df1.index + 1 #从这个csv文件中读取所要追加到另一个文件的原始文件并取列名 df2 = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106.csv') df1['label'] = df2['label_fpd4'] #输出重写之后的文件,并设置所有列的列名为id,表中的小数位为0 df1.to_csv(filename, index=True, index_label='id',float_format='%.0f')
2.删除csv文件中的某列数据
import pandas as pd filename = '/Users/nova.li/Desktop/workspace/对齐数据/6w_risk_date_merge.csv' df = pd.read_csv(filename) df = df.drop(['md5(mobile)', 'date'], axis=1)
3. 修改指定某列列名
import pandas as pd filename = '/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_label.csv' df = pd.read_csv(filename) df.rename(columns={'label_mob3': 'label'}, inplace=True) df.to_csv(filename)
4. 查看某一列数值为1的个数
pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106.csv')['label_mob3'].sum()
5. 替换列数据
import pandas as pd fname = '/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_done.csv' df = pd.read_csv(fname) data = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106.csv') #删除原来的列 df = df.drop(['label'], axis=1) #新增一列,并将另一个csv文件的某一列添加过来 df['new_label'] = data['label_mob1'] #更改列名 df.rename(columns={'new_label': 'label'}, inplace=True) df.to_csv(fname, index=False)
6. 按比例切分文件
#安装scikit-learn(sklearn)模块 pip install scikit-learn import pandas as pd from sklearn.model_selection import train_test_split import numpy as np data = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_done2.csv') train,test = train_test_split(data,test_size=0.3,) #测试集的比例是30% np.savetxt('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_train.csv',train,delimiter=",",fmt='%s') #delimiter=“,” 才能一个数据一个格 np.savetxt('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_test.csv',test,delimiter=",",fmt='%s')
7. 读取某个文件的前多少行
import pandas as pd fname = '/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_test.csv' df = pd.read_csv(fname) df = df.head(43418) df.to_csv(fname, index=False)
8. 读取某个文件的后多少行
import pandas as pd fname = '/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106_label_mob1_test.csv' df = pd.read_csv(fname) df = df.tail(18608) df.to_csv(fname, index=False)
9. 将某一列数据转化为整数
fname = '/Users/nova.li/Desktop/workspace/对齐数据/predict_res_2e2d6f4f_csv.csv' df = pd.read_csv(fname) #重新赋值方式 df['id'] = df['id'].astype('int') df['model_label'] = df['model_label'].astype('int') df.to_csv(fname, index=False)
10. 空值填充
import pandas as pd fname = '/Users/nova.li/Desktop/workspace/对齐数据/predict_res_2e2d6f4f_csv.csv' df = pd.read_csv(fname) df.fillna(9999, inplace = True) df.to_csv(fname, index=False) #print(df.to_string())
11. txt文件转化为csv文件并添加列名
import pandas as pd data_txt = np.loadtxt('/Users/nova.li/Desktop/workspace/对齐数据/predict_res_2e2d6f4f.txt') data_txtDF = pd.DataFrame(data_txt) data_txtDF.columns = ['id', 'model_label', 'model_score'] data_txtDF.to_csv('/Users/nova.li/Desktop/workspace/对齐数据/predict_res_2e2d6f4f_csv.csv', index=False)
12. csv文件添加列名
filename = '/Users/nova.li/Desktop/workspace/对齐数据/cut_data/train.csv' df = pd.read_csv(filename) df.columns = ['id', 'label', 'level', 'age', 'height'] data = '/Users/nova.li/Desktop/workspace/对齐数据/cut_data/total.csv' df2 = pd.read_csv(data) new_columns = df2.columns.to_list() df.to_csv(filename, index=False)
13. csv文件合并
import pandas as pd df1 = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_date.csv') df2 = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106.out.csv') pd.merge(df1, df2, on='id', how='outer', left_on=None, right_on=None, left_index=False, right_index=False, sort=False)
14. 判断文件的某两列是否相等
import pandas as pd df1 = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_date.csv') df2 = pd.read_csv('/Users/nova.li/Desktop/workspace/对齐数据/6w_2104_2106.out.csv') #不同文件对比 df1['md5(mobile)'].equals(df2['account_md5']) #同一文件不同列对比 #df1['md5(mobile)'].equals(df1['account_md5'])
我也不知道我一个做前端的为什么一下子就接触到python的东西了,总而言之,多学点东西总是好的,继续努力🥸,今天也要加油鸭~🥰
一个人静静地坐在电脑前写代码,有种武林高手闭关修炼的感觉!