pandas DataFra,学习笔记大全

读取数据

数据预处理

import pandas as pd

header = ['歌名','歌手','专辑','标签']
df = pd.read_csv('name.csv',na_values='无',index_col=0,names = header)
#读取时会把‘无’替换为nan,index_col=0以文本索引为索引,names指定列名
#
#content = [json.loads(line) for line in open(path,encoding='utf-8')]

查看前几行:df.head()
查看尾几行:df.tail()
查看信息:df.info()
查看字段名称:df.columns
查看字段形态:df.dtypes
取得叙述性统计(数值):df.describe()

数据更改

  • 更改数据格式:df['price'].astype('int')
  • 更改列名称:df.rename(columns={'category': 'category-size'})

数据筛选

  • 筛选字段**:df['产权性质'].value_counts()
  • 筛选指定内容:df[df['age']>20]
  • 筛选多个指定内容 df[(df['租金(元)']<2000) & (df['面积(平米)']>20)]
df[~df['A'].isin(['null'])] #选取df中A列不包含‘null’的行
df = df[df['decorate'].isin(['精装修','豪华装修','简装修'])]#多条件筛选
df1[df1['A'].isin([1])]  #选取df1中A列包含数字1的行

数据排序

data.sort_values(by=(['My_score','acreage']),ascending=False)
#ascending选择升序或降序排列

移除重复数据

  • drop_duplicates方法,它用于返回一个移除了重复行的DataFrame:
import pandas as pd

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print(data.drop_duplicates())

# 删除指定列的是重复数据, keep=‘first’ 保留出现的第一个,last为最后一个
df= df.drop_duplicates(['k1','k2'],keep='first')

移除重复数据

  • 移除指定栏位的重复行:
import pandas as pd

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print(data.drop_duplicates(['k1','k2']))

移除重复

新增/删除栏位

  • 新增:
df['employee'] = True
  • 删除:
del df['employee']
#df = df.drop('employee',1)

栏位处理

设定新的索引

df['userid'] = range(1,10)
df.set_index('userid',inplace=Ture)

根据位置索引取值

Pandas中iloc和loc以及ix的区别

  • 根据位置
    位置取值
  • 根据索引

索引取值

处理缺失值

- 检查缺失值

检查非缺失值:df[‘gender’].notnull()
检查缺失值:df[‘gender’].isnull()

  • 检查DataFrame是否还有缺失值:df.isnull().values.any()

  • 检查字段是否还有缺失值:df['name'].isnull().values.any()

  • 检查字段缺失值的数量: df.isnull().sum()

  • 计算所有缺失值的数量:df.isnull().sum().sum()
    侦测缺失值:df.isnull() 或 df.isnull().any()
    查看缺失比例:df.isnull().sum()/df.count()

–显示缺失值

  • 显示缺失值行列:
df[df.isnull().values==True]
  • 舍弃缺失值

舍弃含有任意缺失值的行:df.dropna()
舍弃所有字段都含有的缺失值的行:df.dropna(how='all')
舍弃超过两栏缺失值的行:df.dropna(thresh=2)
增加一包含缺失值的列:df['emplyee'] = np.ana
舍弃皆为缺失值的列:df.dropna(axis=1,how='all')

  • 填补缺失值

用0填补:df.fillna(0)
用平均数缺失值:df['age'].fillna(df['age'].mean())
用性别平均值填补:df['age'].fillna(df.groupby('gendre')['age'].transform('mean'),inplace=True)

  • 向前向后填补
    向前:df.fillna(method='pad')
    向后:df.fillna(method='bfill',limit=2)

  • 使用内插法填补
    按照一定规律:df.interpolate()

资料转换 Apply,Map,ApplyMap

  • map将函数套用到Series上的每个元素
def removeDollar(e):
	retrun e.split("元")[0]
df['价格'].map(removeDollar)

使用匿名函数

df['价格'].map(lambda e: e.split('元')[0])
  • apply将函数套用到DataFrame上的行与列
    这里写图片描述
  • applymap将函数套用到DataFrame上的每个元素
    这里写图片描述

处理时间格式资料

  • 打印出现在的时间
from datetime import datetime
current_time = datetiem.now()

将时间转换为字符串

current_time.strftime(‘%Y-%m-%d’)

将字符串转换为时间

current_time.strftime(’2018-01-01‘,’%Y-%m-%d‘)

时间格式:西年2018年01月01日
pandas处理:
时间格式转换

  • pandas中使用正则:

正则表达式使用

df遍历所以行

参考
.iterrows():在单独的变量中返回索引和行项目,但显着较慢
.itertuples():快于.iterrows(),但将索引与行项目一起返回,ir [0]是索引
zip:最快,但不能访问该行的索引

for n in df.iterrows():
    print(n[1])
    print(n[1][0])
    print(n[1][1])
    print(n[1][3])
    break
    #   歌名                    蜗牛与黄鸝鸟
		歌手                        群星
		专辑    金韵民谣风1977-1982辉煌民歌记录精选
		标签                       70后
		Name: 0, dtype: object
		蜗牛与黄鸝鸟
		
# itertuples
for n in df.itertuples():
    print(n)
    print(n[1])
    #Pandas(Index=0, 歌名='蜗牛与黄鸝鸟', 歌手='群星', 专辑='金韵民谣风1977-1982辉煌民歌记录精选', 标签='70后')
	蜗牛与黄鸝鸟
	
# zip
for i,j in zip(sing['歌名'],sing['歌手']):
    print(i,j)
    # 蜗牛与黄鸝鸟 群星

保存数据

我们一般都是保存为CSV文件格式

#index参数设置为False表示不保存行索引,header设置为False表示不保存列索引
data.to_csv("data.csv",index=False,header=False)

pandas在保存文件的时候,默认会将缺失值保存成空字符串
如果需要填充

 #不保存行索引和列索引,使用NULL来替代空字符串
 data.to_csv("data.csv",index=False,header=False,na_rep="NULL")

通过设置to_csv函数的sep参数可以修改默认保存文件时候的分隔符
它默认为逗号:,

data.to_csv("data.csv",sep="-")
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值