做电影网站侵权,企业查询网页版,怎样创建个人的网站,纯文字logo在线制作# 新的数据格式#xff0c;csv纯文本#xff0c;使用某个字符集#xff0c;比如都是ASCII、Unicode、EBCDIC或GB2312#xff08;简体中文环境#xff09;等#xff1b;由记录组成#xff08;典型的是每行一条记录#xff09;每条记录被分隔符#xff08;英语#xff…# 新的数据格式csv纯文本使用某个字符集比如都是ASCII、Unicode、EBCDIC或GB2312简体中文环境等由记录组成典型的是每行一条记录每条记录被分隔符英语Delimiter分隔为字段英语Field(computer science)典型分隔符号有逗号、分号或制表符有时分隔符可以包括可选的空格每条记录都有同样的字段序列
import pandas as pd
import numpy as npabs_path rF:\Python\learn\python附件\pythonCsv\data.csv
df pd.read_csv(abs_path,encodinggbk)df.head(2)序号姓名性别语文数学英语物理化学生物01渠敬辉男80603040306012韩辉男909575758085
type(df)pandas.core.frame.DataFrameDataFrame
# 列名
print(df.columns)
# 索引
print(df.index)Index([序号, 姓名, 性别, 语文, 数学, 英语, 物理, 化学, 生物], dtypeobject)
RangeIndex(start0, stop7, step1)df.loc[0]序号 1
姓名 渠敬辉
性别 男
语文 80
数学 60
英语 30
物理 40
化学 30
生物 60
Name: 0, dtype: objecta np.array(range(10))
a 3array([False, False, False, False, True, True, True, True, True,True])# 筛选数学成绩大于80
df[df.数学 80]序号姓名性别语文数学英语物理化学生物12韩辉男90957575808534石天洋男909095807580
df[df.数学 80]序号姓名性别语文数学英语物理化学生物01渠敬辉男80603040306045张三男60606060606067王五男707070707070
# 复杂筛选
df[(df.语文 80) (df.数学 80) (df.英语 80)]序号姓名性别语文数学英语物理化学生物34石天洋男909095807580
排序
df.sort_values([数学,语文,英语]).head()序号姓名性别语文数学英语物理化学生物45张三男60606060606001渠敬辉男80603040306067王五男70707070707056李四女80808080808023韩文晴女958085608090
访问
# 按照索引去定位
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英语数学姓名one9064wongtwo7878lithree8945sun
df.indexIndex([one, two, three], dtypeobject)# 因为此时不存在数字索引所以不能通过数字索引去访问
# df.loc[1]
df.loc[one]英语 90
数学 64
姓名 wong
Name: one, dtype: object# 实实在在的所谓的第几行
df.iloc[0]英语 90
数学 64
姓名 wong
Name: one, dtype: object# 合并了loc和iloc的功能新版本下ix方法已被弃用
df.ix[0]---------------------------------------------------------------------------AttributeError Traceback (most recent call last)ipython-input-22-413c174d3cd1 in module1 # 合并了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 ixdf.loc[:2]序号姓名性别语文数学英语物理化学生物01渠敬辉男80603040306012韩辉男90957575808523韩文晴女958085608090
# 当索引为数字索引的时候ix和loc是等价的新版本下ix方法已被弃用
df.ix[:2]---------------------------------------------------------------------------AttributeError Traceback (most recent call last)ipython-input-33-a97de2692f80 in module1 #当索引为数字索引的时候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[0]# 访问多行数据是可以使用切片的
df[:2]序号姓名性别语文数学英语物理化学生物01渠敬辉男80603040306012韩辉男909575758085
# dataframe中的数组
df.数学.valuesarray([60, 95, 80, 90, 60, 80, 70], dtypeint64)# 简单的统计
df.数学.value_counts()60 2
80 2
95 1
70 1
90 1
Name: 数学, dtype: int64# 提取多列
new df[[数学,语文]].head()
new数学语文0608019590280953909046060
new * 2数学语文01201601190180216019031801804120120
重点
def func(score):if score80:return 优秀elif score70:return 良elif score60:return 及格else:return 不及格passdf[数学分类] df.数学.map(func)df.head()序号姓名性别语文数学英语物理化学生物数学分类01渠敬辉男806030403060及格12韩辉男909575758085优秀23韩文晴女958085608090优秀34石天洋男909095807580优秀45张三男606060606060及格
# applymap对dataframe中所有的数据进行操作的一个函数非常重要
def func(number):return number 10
# 等价
func lambda number : number 10df.applymap(lambda x : str(x) - ).head(2)序号姓名性别语文数学英语物理化学生物数学分类01 -渠敬辉 -男 -80 -60 -30 -40 -30 -60 -及格 -12 -韩辉 -男 -90 -95 -75 -75 -80 -85 -优秀 -
匿名函数
# 列表推导式
[i100 for i in range(10)][100, 101, 102, 103, 104, 105, 106, 107, 108, 109]def func(x):return x 100list(map(func,range(10)))[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]# 匿名函数的使用条件
# 1.函数就一行
# 2.函数不经常使用
# 3.函数没有必要取名字
list(map(lambda x : x100,range(10)))[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]# apply根据多列生成新的一个列的操作用apply
df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 前几行
df.head(2)
# 最后几行
df.tail(2)序号姓名性别语文数学英语物理化学生物数学分类new_score56李四女808080808080优秀16067王五男707070707070良140
panda中的dataframe的操作很大一部分跟numpy中的二位数组的操作是近似的