pandas入门

安装pandas

pip install pandas

导入pandas

import pandas as pd

载入数据

(1) 使用相对路径载入数据  

df=pd.read_csv('train.csv')

(2) 使用绝对路径载入数据

df=pd.read_csv(r'E:\python\python三大数据分析库\train.csv')

(文件路径同python文件操作的路径)

数据加载

·pd.read_csv() 默认使用逗号(,)作为字段分隔符,这适用于读取 CSV(Comma Separated Values)文件。但也可以通过设置 sep 或 delimiter 参数来读取其他分隔符的文件。

·pd.read_table() 则默认使用制表符(\t)作为字段分隔符,更适用于读取 TSV(Tab-separated values)或其他使用非逗号分隔的文件。通过调整 sep 或 delimiter 参数,它可以读取几乎任何类型的分隔符文本文件。

·要读取一个 TSV 文件,你可以使用 pd.read_csv(file, sep='\t') 或 pd.read_table(file),两者在这种情况下效果相同。

·要读取一个 CSV 文件,你可以使用 pd.read_csv(file) 或 pd.read_table(file,sep=','),两者在这种情况下效果相同。

df1=pd.read_csv('train.csv')
df2=pd.read_table('train.csv',sep=',')

逐块读取

chunker=pd.read_csv("train.csv",chunksize=1000)
for i in chunker:
    print(i)

如果指定了chunksize参数,pd.read_csv或pd.read_table会返回一个迭代器,该迭代器迭代时,每次读取文件的最多chunksize行(最后一次读取可能不够chunksize行)。

每次读取到的部分以DataFrame类型返回,遍历过程总共会返回⌈n/chunksize⌉个DataFrame,其中n是数据的总行数。

逐块读取可以用来读取大文件,防止将文件一次性读入,因为内存占用过多产生各种问题。

表头改成中文

#方法1
df=pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)

#方法2
df=pd.read_csv('train.csv')
df.columns=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口']

#方法3
df=pd.read_csv('train.csv')
column={'PassengerId':'乘客ID','Survived':'是否幸存','Pclass':'乘客等级(1/2/3等舱位)','Name':'乘客姓名','Sex':'性别','Age':'年龄','SibSp':'堂兄弟/妹个数','Parch':'父母与小孩个数','Ticket':'船票信息','Fare':'票价','Cabin':'客舱','Embarked':'登船港口'}
df.rename(columns=column,inplace=True)

观察数据

查看数据的基本信息

df.info()

观察表格前10行的数据和后15行的数据

df.head(10)
df.tail(15)

判断数据是否为空,为空的地方返回True,其余地方返回False

df.isnull().head(5)

查看某列的所有值

df['列名'].head(3)
df.列名.head(3)

查看数据基本信息

frame2.describe()
'''
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
'''

保存数据

将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv

# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入encoding='GBK' 或者 encoding = 'utf-8'`
df.to_csv('train_chinese.csv')

两个数据类型DateFrame和Serie

DateFrame

创建

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
example_2 = pd.DataFrame(data)
example_2

查看DataFrame数据的每列的名称

df.columns

Serie

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)
example_1 

对数据的一些操作

删除

#方法1
del test1['a']

#方法2
test2=pd.read_csv('test_1.csv')
test_2=test2.drop(['Unnamed: 0','a'],axis=1)

隐藏

df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)#axis=1对列操作,对行则不用

如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了,所以这里没有用

df.drop(['PassengerId','Name','Age','Ticket'],axis=1,inplace=True)

筛选(逻辑语句的运用)

midage=df[(df['Age']>10)&(df['Age']<50)]
midage.head(101)

显示

重置索引

midage=df[(df['Age']>10)&(df['Age']<50)]
midage=midage.reset_index(drop=True)
midage.loc[[100],['Pclass','Sex']]

不重置索引

midage=df[(df['Age']>10)&(df['Age']<50)]
midage.loc[[100],['Pclass','Sex']]

显示的是df中索引100所在行的'Pclass','Sex'的数据,而midage中的索引仍是df中符合年龄标准所在行的索引,不是从0依次增加

loc

midage.loc[[100,105,108],["Pclass","Name","Sex"]]

·loc利用(表象的)索引名和列名检索

iloc

midage.iloc[[100,105,108],[2,3,4]]#索引

·iloc利用索引号和列号,即本质的索引进行检索

排序

#自己构建一个都为数字的DataFrame数据
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),#矩阵 
                     index=['2', '1'], #行
                     columns=['d', 'a', 'b', 'c'])#列
frame

对值排序

#将你构建的DataFrame中的数据根据某一列,升序排列
frame.sort_values(by='c',ascending=True)

# 让任选两列数据同时降序排序
frame.sort_values(by=['a','c'],ascending=False)

对索引排序

# 让行索引升序排序
frame.sort_index()

# 让列索引升序排序
frame.sort_index(axis=1)

# 让列索引降序排序
frame.sort_index(axis=1,ascending=False)

计算

frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
                     columns=['a', 'b', 'c'],
                     index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
                     columns=['a', 'e', 'c'],
                     index=['first', 'one', 'two', 'second'])
frame1_a+frame1_b

两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值