pandas使用记录

目录

查看dataframe信息

Pandas在Excel的几个sheet中读写数据的方法

python-Pandas学习 如何对数据集随机抽样?

中文乱码问题

删除重复项

增删列、行

join、merge、concat--合并与重塑

resample插值

排序、排名

多层索引降级

空值处理

画箱型图

分组取平均

分组,依据相应的列的值生成新的列,或者改变已有列的值:

高阶函数map()使用

获取最大值所在的行

计算dataframe中两两列之间的相关系数

直接让列相加

多行集合成一行

df.append()

对各行、各列的加减乘除操作

改变某列的数值类型

更改列名

按给定范围选择数据

从时间列中提取年月日

数据标准化

统计某列每个值出现的次数

在子图中插入文本








查看dataframe信息

查看DataFrame有多少行、列:df.shape

仅查看DF有多少行:df.index.size


Pandas在Excel的几个sheet中读写数据的方法


python-Pandas学习 如何对数据集随机抽样


中文乱码问题

解决写入中文乱码问题:df.to_csv(file, encoding='utf_8_sig'),读文件:pd.read_csv(file, engine='python')


删除重复项

删除重复项


增删列、行

df.drop(columns=[1,2])删除不想要的列

指定位置插入一列

增加一行

pandas删除一行或一列:

life is short, you need python!


join、merge、concat--合并与重塑

数据合并与重塑---concat篇---join/merge篇--连接传送门图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了

pandas几个DataFrame的整合

当用df.append()时

df1 = pd.DataFrame()
df2 = pd.DataFrame()

# 设两者有相同的列,此时将df2接在df1上
df1.append(df2)  # 这样不会改变df1

df1 = df1.append(df2) # df1是两者结合后的产物,另外若index有冲突,则需要传入index操作参数

resample插值

resample函数可以对缺失的时间进行填补,同时可以设置采样频率等,参看Pandas —— resample()重采样和asfreq()频度转换

插值(重采样):官方文档resamplepython数据处理——pandas进行数据变频或插值

df.interpolate可以采用线性插值等多种插值,对象是Dataframe或者series

排序、排名

pandas的排序和排名


多层索引降级

在Pandas中如何给多层索引降级


空值处理

df.dropna(axis=0, how='any', inplace=True) # 在原位置删除有空值的行

莫烦的教程:

专用于处理空值的模块


画箱型图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)

df.boxplot()  # 对df的所有数值(非字符数据)列画箱型图
plt.show()

df.boxplot(column= ['Points']) # 指定用某一列画箱型图
plt.show()

df['Points'].plot.box() # 这里的方法属于matplotlib,而前面的方法属于pandas
plt.show()

分组取平均

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)


grouped = df.groupby('Team') # 按队('Team')分组
avg = grouped['Points', 'Year'].agg(np.mean) # 计算各组分数、年份的平均值
print (avg)

print (type(avg))  # 结果是 <class 'pandas.core.frame.DataFrame'>
for group in avg:  # 结果是Points Year
	print( group)

avg2 = grouped['Points'].agg(np.mean) # 计算各组分数、年份的平均值
print (type(avg2)) # 结果是 <class 'pandas.core.series.Series'>
for group in avg2: # 结果是一列浮点数(各组均值)
	print( group)

'''
上面说明Pandas的聚合函数(agg)处理时,需要结果是DataFrame则DataFrame
若结果只一列则Series之,DataFrame、Series都有索引列
'''

分组,依据相应的列的值生成新的列,或者改变已有列的值:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)


grouped = df.groupby('Team') # 按队('Team')分组
print(df)

# 分组后得到的对象是一个tuple——数据结构类似字典——key:组名,value:分组结果
# 因为分组后,我们没有改变索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值