python:pandas dataframe数据处理总结,读写文件,增删改查,缺失处理,连接合并,去重

本文总结了Python Pandas DataFrame的数据处理操作,包括生成DataFrame、读写文件、增删改查、缺失值处理、连接合并及去重等。重点介绍了如何使用各种函数如`assign`、`drop`、`sort_values`、`groupby`、`merge`和`drop_duplicates`等进行数据操作。
摘要由CSDN通过智能技术生成


  这篇blog长期更新,总结一些python数据处理过程中常用的方法(不总结老是忘),我一般喜欢用dataframe做数据处理,所以一般会尽量转成pandas的dataframe格式。所有方法需要先导入库pandas和numpy。

import pandas as pd
import numpy as np

1. 生成dataframe

  pd.DataFrame

# 输入二维向量,columns是列索引,index是行索引
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
print(df)

# 输出:
"""
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9
"""

更改行索引的显示顺序:

  df.reindex

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df = df.reindex([2,1,0])
print(df)

# 输出
"""
   a  b  c
2  7  8  9
1  4  5  6
0  1  2  3
"""

更新列索引名:

  df.columns
  df.rename

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
# 法一,暴力法
df.columns=['a', 'b', 'f']
# 法二,当列索引的数量很多,用第二种比较好,可以只改一部分
df.rename(columns={'b':'e'}, inplace = True)
print(df)

# 输出
"""
   a  e  f
0  1  2  3
1  4  5  6
2  7  8  9
"""

2. 读写数据文件

json:

# 读取方法一,针对利用pd.to_json()存的json十分合适
pd.read_json('xxx')
# 读取方法二,有时候读取的json文件,不是由pd.to_json存的,利用pd.read_csv可能会有问题,要用这种方法
with open('xxx') as f:
    for i in f.readlines():
        data = json.load(i)
        
# 写方法
pd.to_json('xxx')

csv:


# 读方法,nrows用于选择读取前多少行,usecols用于选择读取哪些列
df = pd.read_csv('xxx.csv', nrows = 10000, usecols = [0, 5, 82, 83])

# 写方法,ignore_index用于确定是否保存行索引,ignore_index=False会保存行索引
df.to_csv('xxx.csv', ignore_index=True)

txt:

# 读取
data=[]
f = open('xxx.txt', 'r')
for line in f:
    info1, info2 = line.split(',')    # 这里默认一行只有一个","来分割两个数据,可以视情况增加输出 
    data.append([info1, info2])
f.close

# 一般不建议保存成txt,可以直接保存成csv

3. 增加:

增加一列:

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df['d']=[4,7,10]
print(df)

# 输出
"""
   a  b  c   d
0  1  2  3   4
1  4  5  6   7
2  7  8  9  10
"""

  如果增加一列,这一列是用已有的列计算出来的,注意如果原来的df中有’d’这一列,则会把数据替换掉。
  df.assign

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df = df.assign(d = lambda x: x.a+x.b)   # a索引列与b索引列相加
print(df)

# 输出
"""
   a  b  c   d
0  1  2  3   3
1  4  5  6   9
2  7  8  9  15
"""

  df.assign是一个十分强大的函数,下面给出一个更复杂的情况,把df的’a’列的元素向下移动一列放到’d’列中。

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'])
df.assign(d = lambda x: x.b.shift(1))

# 输出
"""
   a  b  c    d
0  1  2  3  NaN
1  4  5  6  2.0
2  7  8  9  5.0
"""

  指定位置增加一列

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df.insert(1,'B',[11,12,13])     #列索引的1位置插入一列
print(df)

# 输出
"""
   a   B  b  c
0  1  11  2  3
1  4  12  5  6
2  7  13  8  9
"""

增加一行:

  df.append

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df = df.append({'a':10, 'b':11, 'c':12}, ignore_index=True)
print(df)

# 输出
"""
    a   b   c
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
"""

4. 删除:

  df.drop

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a', 'b', 'c'], index = [0,1,2])
df.drop('a',axis=1, inplace=True)     # axis=1删除列,inplace为True表示直接对原表修改且返回None,默认是False
df = df.drop(0,axis=0)     # axis=0删除行
print(df)

# 输出
"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值