使用的软件为Jupyter Notebook
将DataFrame包装进数据框;
import numpy as np
disl={
'id':list(range(1,10)),
'cpu':['i7','i5',np.nan,'i7','i7','i5',np.nan,np.nan,'i5']}
pd.DataFrame(disl)
tsv文件读取:
import pandas as pd
train=pd.read_csv('test.tsv', sep='\t')#sep输入的是分隔符
如果读取tsv已有表头:
train=pd.read_csv('test.tsv', sep='\t', header=0)
如果已有主键列:
train=pd.read_csv('test.tsv', sep='\t', header=0, index_col='id')
原文地址:https://zgljl2012.com/python-pandasdu-qu-tsvwen-jian/
python pandas读取前十行:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t',nrows=10)
获取pandas的列数:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data.shape[1]
获取pandas的行数:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data.shape[0]#或者:len(data)
打印全部列名
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
#1:
list(data)
#2:
[column for column in data]
#3:(返回的是array)
data.columns.values
#4:(返回Index,可以通过 tolist(), 或者 list(array) 转换为list)
data.columns
查看pandas中的索引数据类型:
#少量数据:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data.dtype
#大量数据:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data_type=data.cloumns
for a in data_type:
print(a+':'+str(data[a].dtype))
pandas按照指定列排序:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
df = data.groupby(by=['item_name']).sum()
df.sort_values(by="item_name" , ascending=False)
#by: 指定列 ascending,False为降序,True为升序
pandas获取n行到m行
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data.local[n,m]#n,m为int
pandas获取指定列:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
#获取quantity和item_price列
data[['quantity','item_price']]
pandas指定列相乘:
import pandas as pd
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
#获取quantity和item_price列
data[['quantity','item_price']]
data['col3']=data.apply(lambda data:data['quantity']*data['item_price'], axis=1)
#新建的col3列为指定列乘积
#若其中一项为string,则相乘只是将字符串重复
pandas中删除包含指定字符的行:
import pandas as pd
import numpy as np
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data=data[['quantity','item_price']]#单独显示价格和数量
#~必须有
data=data[~data['item_price'].str.contains('$')]
data
输出:

pandas中想取到包含某些字符的行:
import pandas as pd
import numpy as np
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data=data[['quantity','item_price']]#单独显示价格和数量
#去掉~即可
data=data[data['item_price'].str.contains('$')]
data
pandas中去除开头的$:
import pandas as pd
import numpy as np
data=pd.read_csv('./data/chipotle.tsv', sep='\t')
data=data[['quantity','item_price']]#单独显示价格和数量
data['item_price'].str.strip('$')
下面文章所用的原数据如图:
1.修改列名(使他看起来好看/方便一些):
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
#要求名称:data.columns =['公司','岗位','工作地点','工资','发布日期']
#法一:
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
#法二:
#data.set_axis(['公司','岗位','工作地点','工资','发布日期'],axis='columns',inplace=False)
data
2.如果你想看元数据中岗位的总数/哪个岗位需求最多:
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
data
#2.数据产品经理所需岗位最多
df= data.groupby(['岗位']).count()
df
3.将其中的最后一行“发布时间”改为dataframe时间类型:
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
from datetime import datetime
#不同的时间格式修改:
#%y 两位数的年份表示(00-99)
#%Y 四位数的年份表示(000-9999)
#%m 月份(01-12)
#%d 日(0-31)
#%H 24小时制小时(0-24)
#%I 12小时制小时(0-12)
#%M 分钟(00-59)
#%S 秒(00-59)
data['发布日期']=pd.to_datetime(data['发布日期'],format='%m-%d')
4.查看指定发布日期的行
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
data
#显示所有9-3号的招聘
data[data['发布日期'].isin(['09-03'])]
5.查看公司在深圳并且岗位是数据分析师的行:
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
data
#显示所有9-3号的招聘
data=data[data['工作地点'].isin(['深圳'])]
data=data[data['岗位'].isin(['数据分析师'])]
6.去除所有行中有NaN值得行:
import pandas as pd
data=pd.read_csv('./data/job_info/job_info.csv',encoding='gbk')
data=data.rename(columns={
'字节跳动':'公司','数据产品经理':'岗位','北京':'工作地点','2-3.5万/月':'工资','09-03':'发布日期'})
data
#如果想要代替的话:
#data.fillna(0)
#丢弃:
end=data.dropna(axis=0,how='any')
end