安装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
125

被折叠的 条评论
为什么被折叠?



