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()