纯文本,使用某个字符集,比如都是ASCII、Unicode、EBCDIC或GB2312(简体中文环境)等; 由记录组成(典型的是每行一条记录) 每条记录被分隔符(英语:Delimiter)分隔为字段(英语:Field(computer science))(典型分隔符号有逗号、分号或制表符;有时分隔符可以包括可选的空格) 每条记录都有同样的字段序列   
import  pandas as  pd 
import  numpy as  np
  
abs_path =  r'F:\Python\learn\python附件\pythonCsv\data.csv' 
df =  pd. read_csv( abs_path, encoding= 'gbk' ) 
  
df. head( 2 ) 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 0 1 渠敬辉 男 80 60 30 40 30 60 1 2 韩辉 男 90 95 75 75 80 85 
 
type ( df) 
  
pandas.core.frame.DataFrame
  
 DataFrame  
print ( df. columns) 
print ( df. index) 
  
Index(['序号', '姓名', '性别', '语文', '数学', '英语', '物理', '化学', '生物'], dtype='object')
RangeIndex(start=0, stop=7, step=1)
  
df. loc[ 0 ] 
  
序号      1
姓名    渠敬辉
性别      男
语文     80
数学     60
英语     30
物理     40
化学     30
生物     60
Name: 0, dtype: object
  
a =  np. array( range ( 10 ) ) 
a >  3 
  
array([False, False, False, False,  True,  True,  True,  True,  True,True])
  
df[ df. 数学 >  80 ] 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 1 2 韩辉 男 90 95 75 75 80 85 3 4 石天洋 男 90 90 95 80 75 80 
 
df[ df. 数学 <  80 ] 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 0 1 渠敬辉 男 80 60 30 40 30 60 4 5 张三 男 60 60 60 60 60 60 6 7 王五 男 70 70 70 70 70 70 
 
df[ ( df. 语文 >  80 )  &  ( df. 数学 >  80 )  &  ( df. 英语 >  80 ) ] 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 3 4 石天洋 男 90 90 95 80 75 80 
 
 排序  
df. sort_values( [ '数学' , '语文' , '英语' ] ) . head( ) 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 4 5 张三 男 60 60 60 60 60 60 0 1 渠敬辉 男 80 60 30 40 30 60 6 7 王五 男 70 70 70 70 70 70 5 6 李四 女 80 80 80 80 80 80 2 3 韩文晴 女 95 80 85 60 80 90 
 
 访问  
df. loc[ 3 ] 
  
序号      4
姓名    石天洋
性别      男
语文     90
数学     90
英语     95
物理     80
化学     75
生物     80
Name: 3, dtype: object
  
 索引  
scores =  { '英语' : [ 90 , 78 , 89 ] , '数学' : [ 64 , 78 , 45 ] , '姓名' : [ 'wong' , 'li' , 'sun' ] 
} 
df =  pd. DataFrame( scores, index= [ 'one' , 'two' , 'three' ] ) 
df
  
 
 
英语 数学 姓名 one 90 64 wong two 78 78 li three 89 45 sun 
 
df. index
  
Index(['one', 'two', 'three'], dtype='object')
  
df. loc[ 'one' ] 
  
英语      90
数学      64
姓名    wong
Name: one, dtype: object
  
df. iloc[ 0 ] 
  
英语      90
数学      64
姓名    wong
Name: one, dtype: object
  
df. ix[ 0 ] 
  
---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-22-413c174d3cd1> in <module>1 # 合并了loc和iloc的功能
----> 2 df.ix[0]G:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)5275 5276     def __setattr__(self, name: str, value) -> None:AttributeError: 'DataFrame' object has no attribute 'ix'
  
df. loc[ : 2 ] 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 0 1 渠敬辉 男 80 60 30 40 30 60 1 2 韩辉 男 90 95 75 75 80 85 2 3 韩文晴 女 95 80 85 60 80 90 
 
df. ix[ : 2 ] 
  
---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-33-a97de2692f80> in <module>1 #当索引为数字索引的时候,ix和loc是等价的
----> 2 df.ix[:2]G:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)5275 5276     def __setattr__(self, name: str, value) -> None:AttributeError: 'DataFrame' object has no attribute 'ix'
  
df[ : 2 ] 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 0 1 渠敬辉 男 80 60 30 40 30 60 1 2 韩辉 男 90 95 75 75 80 85 
 
df. 数学. values
  
array([60, 95, 80, 90, 60, 80, 70], dtype=int64)
  
df. 数学. value_counts( ) 
  
60    2
80    2
95    1
70    1
90    1
Name: 数学, dtype: int64
  
new =  df[ [ '数学' , '语文' ] ] . head( ) 
new
  
 
 
数学 语文 0 60 80 1 95 90 2 80 95 3 90 90 4 60 60 
 
new *  2 
  
 
 
数学 语文 0 120 160 1 190 180 2 160 190 3 180 180 4 120 120 
 
 重点  
def  func ( score) : if  score>= 80 : return  '优秀' elif  score>= 70 : return  '良' elif  score>= 60 : return  '及格' else : return  '不及格' pass df[ '数学分类' ]  =  df. 数学. map ( func) 
  
df. head( ) 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 数学分类 0 1 渠敬辉 男 80 60 30 40 30 60 及格 1 2 韩辉 男 90 95 75 75 80 85 优秀 2 3 韩文晴 女 95 80 85 60 80 90 优秀 3 4 石天洋 男 90 90 95 80 75 80 优秀 4 5 张三 男 60 60 60 60 60 60 及格 
 
def  func ( number) : return  number +  10 
func =  lambda  number :  number +  10 df. applymap( lambda  x :  str ( x)  +  ' - ' ) . head( 2 ) 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 数学分类 0 1 - 渠敬辉 - 男 - 80 - 60 - 30 - 40 - 30 - 60 - 及格 - 1 2 - 韩辉 - 男 - 90 - 95 - 75 - 75 - 80 - 85 - 优秀 - 
 
 匿名函数  
[ i+ 100  for  i in  range ( 10 ) ] 
  
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
  
def  func ( x) : return  x +  100 
  
list ( map ( func, range ( 10 ) ) ) 
  
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
  
list ( map ( lambda  x :  x+ 100 , range ( 10 ) ) ) 
  
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
  
df[ 'new_score' ]  =  df. apply ( lambda  x :  x. 数学 +  x. 语文,  axis= 1 ) 
  
df. head( 2 ) 
df. tail( 2 ) 
  
 
 
序号 姓名 性别 语文 数学 英语 物理 化学 生物 数学分类 new_score 5 6 李四 女 80 80 80 80 80 80 优秀 160 6 7 王五 男 70 70 70 70 70 70 良 140 
 
 panda中的dataframe的操作,很大一部分跟numpy中的二位数组的操作是近似的