龙空技术网

python pandas常用实用代码

Joephy 219

前言:

当前咱们对“python中空一行”都比较关切,我们都想要学习一些“python中空一行”的相关文章。那么小编在网摘上网罗了一些对于“python中空一行””的相关内容,希望你们能喜欢,兄弟们一起来学习一下吧!

功能

代码

引入pandas

import pandas as pd

引入sqlite3

import sqlite3

读取csv

df = pd.read_csv(r'C:\…….csv')

读取csv,中文乱码

df = pd.read_csv(r'C:\…….csv',encoding='GB18030')

读取csv,中文乱码

df = pd.read_csv(r'C:\…….csv',encoding='gbk')

读取xlsx

df = pd.read_excel(r'C:\…….xlsx')

上下合并df1和df2

df = pd.concat([df1,df2])

保存xlsx

df.to_excel(r'C:\……xlsx')

左merge

data3=data1.merge(data2,how='left',on='列名')

删除所有单元格为空的行

df = df.dropna()

仅保留该列有重复的行

df = df[df.duplicated(['列名'],keep=False)]

取该列的多有单元格值

for i in df['列名']:

取该列单元格值的前5个字符

df['列名'].replace(i,i[0:5],inplace=True)

删除该列中符合条件值的行

df = df.drop(df[df['列名']=='条件值'].index)

以列名1和列名2排序

df = df.sort_values(by=['列名1', '列名2'], ascending=[True, True])

将下一行添加到上一行后面

df = df.add_suffix('上一行列名').assign(**df.shift(-1).add_suffix('下一行列名'))

删除列名1不等于列名2的行

df = df.drop(df[df['列名1'] != df['列名2']].index)

将该列的单元格属性改为日期时间类型

df['列名']=pd.to_datetime(df['列名'])

计算列名1于列名2的时间差

df['date_diff']=pd.to_datetime(df['列名1'])-pd.to_datetime(df['列名2'])

将时间差列的单元格值设置为天数

df['date_diff']=df['date_diff'].dt.days

以列名数据透视求和

df_pivot_table = pd.pivot_table(df,index="列名",values="求和列",aggfunc="sum")

重置索引(取消合并单元格并填充)

df = df.reset_index()

sqlite3连接

con = sqlite3.connect(r"C:\……\db.sqlite3")

sql读取数据

sql = "SELECT * FROM db"

读取sqlite3数据库数据

df = pd.read_sql(sql,con)

取某5列

df = df.loc[:,['列名1','列名2','列名3','列名4','列名5']]

按分组列分组后对计数列进行计数

df_groupby = df.groupby(['分组列'])['计数列'].count()

取列名1或者列名2或者列名3符合条件值的数据

df=df[(df['列名1']=='条件值')|(df['列名2']=='条件值')|(df['列名3']=='条件值')]

取列名中等于条件数字的数据

df=df[df['列名']==条件数字]

取列名中等于条件值的数据

df=df[df['列名']=='条件值']

删除列名中等于条件值的行

df=df[~(df['列名']=='条件值')]

取某5列

df=df[['列名1','列名2','列名3','列名4','列名5']]

df1与df2和df3合并形成总df

df=df1.append(df2).append(df3)

删除列名中空值的行

df=df.dropna(subset=['列名'])

以分组列1和分组列2进行分组统计列1和统计列2的求和

df_sum = df.groupby(by=['分组列1', '分组列2'])['统计列1', '统计列2'].sum()

删除3个列重复的所有行(重复的都删除)

df=df.drop_duplicates(subset=['列名1','列名2','列名3'],keep=False)

删除3个列重复的行(保留第一行)

df=df.drop_duplicates(subset=['列名1','列名2','列名3'],keep="first")

删除3个列重复的行(保留最后一行)

df=df.drop_duplicates(subset=['列名1','列名2','列名3'],keep="last")

用分列符号对分列列名进行分列

df['分列列名']=df['分列列名'].map(lambda x:x.split('分列符号'))

以分列后的列名的每个值重整每一行数据

df=df.explode('分列列名')

重命名列名

df=df.rename(columns={'列名1':'列名1新','列名2':'列名2新'})

以分列列名的数据列为原始数据通过分列符号分列后得到一个新的df

df=df['分列列名'].str.split('分列符号',expand=True)

取列名

df.columns=['列名1','列名2']

横向拼接df1和df2

df=pd.concat([df1,df2],axis=1)

重置索引列,并删除原来的索引

df=df.reset_index(drop=True)

删除符合条件值的行

df=df.drop(df[df['列名']=='条件值'].index)

所有空值修改为填充值

df=df.fillna(value='填充值')

删除列

df=df.drop('列名',axis=1)

将该列属性修改为数字

df['列名']=pd.to_numeric(df['列名'])

以多个列名数据透视求和

df_pivot_table=pd.pivot_table(df,index=['列名1','列名2','列名3'],values="求和列",aggfunc="sum")

保留前n列重复的行

df=df[df.duplicated(df.iloc[:,:n].columns,keep=False)]

删除前n列重复的所有行(重复的都删除)

df=df.drop_duplicates(subset=df.iloc[:,:n].columns,keep=False)

删除前n列重复的行(保留第一行)

df=df.drop_duplicates(subset=df.iloc[:,:n].columns,keep="first")

删除前n列重复的行(保留最后一行)

df=df.drop_duplicates(subset=df.iloc[:,:n].columns,keep="last")

删除空行空列

df = df.dropna()

删除数字大于n的行

df = df.drop(df[df['列名']> n].index)

删除数字等于n的行

df = df.drop(df[df['列名']==n].index)

删除日期小于该年月日的行

df = df.drop(df[df['日期列']<'yyyy-mm-dd'].index)

引入json

import json

建立空df

dataframe={ }

设置json文件路径

with open(r"C:\…….json") as file:

打开json文件

jsonfile=json.load(file)

历遍json文件得到matadata数据集

for metadata in jsonfile:

引入os

import os

建立空的列

series=[ ]

取得metadata的数据

value=matedata['主标题'][n]['副标题']

value1与value2组合形成df

df[value1]=value2

设置os操作文件夹

for root,dirs,files in os.walk(r"C:\……\文件夹",topdown=False):

历遍所有文件名

for name in files:

获取完整文件路径和文件名

file_path=os.path.join(root,name)

判断是否符合文件名后缀

if '文件名后缀' in file_path:

将值添加到列表

series.append(value)

获取文件路径中的文件名

filename=file_path.split('\\')[-1]

以第2行为标题行

df=pd.read_csv(file_path,sep='\t',header=1)

所有的series横向拼接成df

df=pd.concat(series,axis=1)

保存为csv文件

df.to_csv(r'C:\…….csv')

取得该列的值

value=df['列名']

赋值给列

df['列名']=value

设置serises第一行为df索引

df.index=serises[0:]

建立df

df=pd.DataFrame({'列名1':[1,2,3,4],'列名2':['V1','V2','V3','V4']})

建立列

series = pd.Series(["V1", "V2", "V3"])

获取第m行n列单元格

cell=df.loc[m,n]

删除整行空值行

df = df.dropna(axis=1,how='all')

删除整列空值列

df = df.dropna(axis=0,how='all')

取m行到n行

df=df.iloc[m:n,:]

某列符合该条件值的所在行号

n = list(df['列名']).index(条件值)

标签: #python中空一行