pandas

1、pandas数据读取 与 保存

csv,txt,tsv
pd.read_csv

excel
pd.read_excel

mysql
pd.read_sql

读取数据

import pandas as pd
data = pd.read_csv('C:/Users/admin/Desktop/jiang.csv')
# 读取多个sheet文件
pd.read_excel("test2.xls",sheetname) # pd.read_excel("test2.xls","test3") 

获取sheetname

wb = xlrd.open_workbook(r'test2.xls')
 # 获取workbook中所有的表格
sheets = wb.sheet_names()

保存数据

data.to_csv('C:/Users/admin/Desktop/data.csv',index=False,header=False)

2、pandas 生成

pd.DataFrame({"a":[1,2,3]})

3、pandas查询数据

打乱数据

data.sample(frac=1)

随机排序

data.take(np.random.permutation(8393))

查看前几行或某几行数据

data.head()  '''data.head(n) 表示查看前n行数据'''
data[0:23]
data[1:23]   '''前23行数据'''

查看数据的形状 (行数,列数) 等

data.shape

查看列名列表

data.columns

查看索引列

data.index

查看每类的数据类型

data.dtypes

查看某几列数据

data[["SEX","AGE"]]

查看某几行和某几列数据

data.loc[1:4,["SEX","AGE"]]

定位某几列

a=['婚姻状态','餐后2小时血糖数值','餐后2小时血糖']
data2=data2.loc[:,a]

统计某列字段的数据分布

data['CURSMOKE'].value_counts()  '''data[字段名].value_counts()'''

根据某字段去重(只保留第一字段)

data.drop_duplicates(['RANDID']) 

根据某字段返回重复结果

data['RANDID'].duplicated()
'''
默认是从前向后进行重复值的查找和判断,也就是后面的条目在重复值判断中显示为True
重复为ture 否则为false
'''

新增数据列

data["series"]=33

按条件查询

data['SEX']>1 '''返回ture和false  '''
data.loc[data['SEX']>1,] '''定位ture的数据'''
data.loc[(data['SEX']>1)&(data['CURSMOKE']==1),] '''联合查询'''

data.query("SEX>1") '''等价于 data.loc[data['SEX']>1,] '''
data.query("SEX>1 & CURSMOKE==1")   '''等价于 data.loc[(data['SEX']>1)&(data['CURSMOKE']==1),]'''

替换某些数据

data.loc[:,"钠数值"] = data["钠数值"].str.replace("无","0")

4、pandas缺失值

删除具有缺失值的行

data=data.dropna(axis=0,subset = ["educ"]) # 删除educ列中具有缺失值的行

数据缺失值统计

import pandas as pd
missing=data.isnull().sum().reset_index().rename(columns={0:'missNum'})
# 计算缺失比例
missing['missRate']=missing['missNum']/data.shape[0]
# 按照缺失率排序显示
miss_analy=missing[missing.missRate>0].sort_values(by='missRate',ascending=False)

import matplotlib.pyplot as plt
import pylab as pl
 
 
fig = plt.figure(figsize=(18,6))
plt.bar(np.arange(miss_analy.shape[0]), list(miss_analy.missRate.values), align = 'center',color=['red','green','yellow','steelblue'])
 
 
plt.title('Histogram of missing value of variables')
plt.xlabel('variables names')
plt.ylabel('missing rate')
# 添加x轴标签,并旋转90度
plt.xticks(np.arange(miss_analy.shape[0]),list(miss_analy['index']))
pl.xticks(rotation=90)
# 添加数值显示
for x,y in enumerate(list(miss_analy.missRate.values)):
    plt.text(x,y+0.12,'{:.2%}'.format(y),ha='center',rotation=90)    
plt.ylim([0,1.2])
 
 
plt.show()

5、pandas数据合并

数据合并

data1
data2
data3=pd.concat([data1,data2])
pd.concat([data1,data2],ignore_index=True)

替换

data3.loc[:,"钠数值"] = data3["钠数值"].str.replace("无","0")

6、pandas 数据转换

pandas.core.series.Series 转 list

data["value"].values.tolist()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值