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的东西了,总而言之,多学点东西总是好的,继续努力🥸,今天也要加油鸭~🥰

posted @ 2021-10-09 18:34  SophiaLeeXJ  阅读(128)  评论(1编辑  收藏  举报