一、传入文件时报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
解决方案:
1、在路径前面加r,即保持字符原始值的意思。
sys.path.append(r'c:\Users\mshacxiang\VScode_project\web_ddt')
2、替换为双反斜杠
sys.path.append('c:\\Users\\mshacxiang\\VScode_project\\web_ddt')
3、替换为正斜杠
sys.path.append('c:/Users/mshacxiang/VScode_project/web_ddt')
参考链接:https://blog.csdn.net/xd060606/article/details/87164798
二、相对路径与绝对路径
相对路径:相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。
df = pd.read_csv('train.csv')
df.head(3)
绝对路径:绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件。
df = pd.read_csv('C:/Users/许诺/Desktop/hands-on-data-analysis-master/第一单元项目集合/train.csv')
df.head(3)
总结:当你要导入的文件在和你的当前文件在同一个目录时,你直接导入这个文件名就好了。当你要导入的文件或者目录不和你的当前文件同目录时,你需要跳到这个你要导入文件的父级目录,然后一级一级的用点号连接走过的目录或者文件。
参考链接:在Python中以绝对路径或者相对路径导入文件的方法_lighting-CSDN博客_python 相对路径
三、查看数据
df.head(3)%查看头部3个数据
df.head()%查看头部5个数据
df.tail()%查看尾部5个数据
df.tail(3)%查看尾部3个数据
用切片方法查看数据
df[:5] #前5行
df[10:15] #第11到第15行
df[-3:] #最后三行
四、使用pd.read_csv()和pd.read_table()的不同
pd.read_csv()
pd.read_table()
五、数据块逐块读取
只读取数据集的某一部分
用for循环打出
#设置chunksize参数,来控制每次迭代数据的大小
chunker = pd.read_csv("train.csv",chunksize=100)
for piece in chunker:
print(piece)
#<class 'pandas.core.frame.DataFrame'>
print(len(piece))
六、pandas中的两种数据类型 DateFrame和Series
Series:一维数组
用一维列表的形式初始化,注意是中括号[ ]
也可以引入字典,注意是花括号{ }
s.values #查看值
array([ 1., 3., 5., nan, 6., 8.])
Data Frame :表格型的数据结构
可以用字典的形式传入数据
格兰芬多学生表(部分)
information = {'姓名':['Harry Poter','Ron Weasley','Hermione Granger','Genny Weasley'],'性别':['男','男','女','女'],'学院':'Gryffindor'}
s = pd.DataFrame(information)
s
查看数据
s.columns #查看列标属性
s.姓名 #查看姓名这一列的值
s['姓名'] #通过索引查看某一列的值
参考链接: pandas数据类型介绍_Vxxxx_的博客-CSDN博客
七、删除某一列的方法
del df['column-name']
隐藏某一列
df.drop(['column_name'],axis = 1) #隐藏某一列或几列,但输出df时仍为原数据
df.drop(['column_name'],axis=1, inplace=True) #覆盖原数据
八、筛选数据
df[10>df['Age']]
df[(10<df['Age'])&(50>df['Age'])]
注意python索引是从0开始的,所以第100行的索引为99
df.loc[[99],['Pclass','Sex']]
loc——通过行标签索引行数据
iloc——通过行号索引行数据
midage.loc[[100,105,108],['Pclass','Name','Sex']]
midage.iloc[[100,105,108],[2,3,4]]
九、排序和排名
生成DataFrame
s1 = pd.DataFrame(np.arange(9).reshape(3,3)
,index = ['one','two','three']
,columns = ['a','b','c'])
#arange(n),生成n个数据
#reshape(x,y),这n个数据按x*y的形状排列,注意x*y = n
#index设置索引,行标签
#columns设置列标签
按照某一列进行排序
df.sort_values(by='columns_name')#按照指定一列进行排序,默认为升序
df.sort_values(by='columns_name',ascending=False)#降序排列
按照行索引排序
frame.sort_index()#默认按照行升序
frame.sort_index(axis = 1)#按照列升序
frame.sort_index(axis = 1,ascending=False)#按照列降序
对两列数据排序,会有优先级,排在前面的优先
两个DataFrame数据相加
对应的行和列相加,注意不是按照顺序对应,是按照行、列标签名对应,没有对应的返回NaN
十、数据的描述统计
求和
df.sum() #按列求和
df.sum(axis = 1) #按行求和
求每行/每列最大最小的索引
df.idxmax()
df.idxmin()
求每行/每列的均值
df.mean()
按行/列累加
df.cumsum()
描述性统计
df.describe()
按列进行描述性统计
df['columns_name'].describe()