数据类型: Series和DataFrame
>>> s = pd.Series(data, index=index)
t1 = pd.Series([13, 23, 33, 43, 53], index=["a", "b", "c", "d", "e"])
print(t1[["b","d","w"]]) # 如果指定的索引不存在,那么对应值就返回NaN(float类型)
df = pd.DataFrame([[1, 2, 3]], columns=list("ABC"))
df= pd.DataFrame({'a': range(10, 20), 'b': range(20, 30)})
col = df.columns # 获取到的col是<class 'pandas.core.indexes.base.Index'>
Index(['A', 'B', 'C'], dtype='object')
col = df.columns.values # 返回结果是数组
pandas.csv() 函数将逗号分离的值 (csv) 文件读入数据框架。还支持可选地将文件读入块或将其分解。
1. filepath_or_buffer:数据输入的路径:可以是文件路径、可以是URL,也可以是实现read方法的任意对象。这个参数,就是我们输入的第一个参数。
# 还可以是一个URL,如果访问该URL会返回一个文件的话,那么pandas的read_ csv函数 会自动将
该文件进行读取。比如:我们用fastapi写一个服务,将刚才的文件返回。
pd.read_csv("http://localhost/girl.csv")
# 里面还可以是一个 _io.TextIOWrapper,比如:
f = open("girl.csv", encoding="utf-8")
pd.read_csv(f)
2.sep : 读取csv文件时指定的分隔符,默认为逗号。注意:"csv文件的分隔符" 和 "我们读取csv文件时指定的分隔符" 一定要一致。
3.delim_whitespace : 默认为 False,设置为 True 时,表示分割符为空白字符,可以是空格、"\t"等等。不管分隔符是什么,只要是空白字符,那么可以通过delim_whitespace=True进行读取。
4.name和header
应用场景:
1. csv文件 有表头并且是第一行,那么names和header都无需指定;
2. csv文件有表头、但表头不是第一行,可能从下面几行开始才是真正的表头和数据,这个时候指定header即可;
3. csv文件没有表头,全部是纯数据,那么我们可以通过names手动生成表头;
4. csv文件有表头、但是这个表头你不想用,这个时候同时指定names和header。先用header选出表头和数据,然后再用names将表头替换掉,就等价于将数据读取进来之后再对列名进行rename;
5 . index_col: 我们在读取文件之后所得到的DataFrame的索引默认是0、1、2……,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引。
6. usecols: 如果一个数据集中有很多列,但是我们在读取的时候只想要使用到的列,我们就可以使用这个参数。
E g
pd.read_csv('girl.csv', delim_whitespace=True, usecols=["name", "address"])
7.dtype : 在读取数据的时候,设定字段的类型。比如,公司员工的id一般是:00001234,如果默认读取的时候,会显示为1234,所以这个时候要把他转为 字符串 类型,才能正常显示为0000123 4
代码:
df = pd.read_csv('girl.csv', delim_whitespace=True, dtype={"id": str})
8.converters : 在读取数据的时候对列数据进行变换,例如将id增加10,但是注意 int(x),在使用converters参数时,解析器 默认所有列的类型为 str,所以需要进行类型转换。
代码:
pd.read_csv('girl.csv', sep="\t", converters={"id": lambda x: int(x) + 10})
9.skiprows : 表示过滤行,想过滤掉哪些行,就写在一个列表里面传递给skiprows即可。注意的是:这里是先过滤,然后再确定表头,比如:
pd.read_csv('girl.csv', sep="\t", skiprows=[0])
这里把第一行过滤掉了,因为第一行是表头,所以在过滤掉之后第二行就变成表头了。
pd.read_csv('girl.csv', sep="\t", skiprows=lambda x: x > 0 and x % 2 == 0)
由于索引从0开始,所以凡是索引大于0、并且%2等于0的记录都过滤掉。索引大于0,是为了保证表头不被过滤掉
直接使用pd.read_excel(r"文件路径"),默认读取第一个sheet的全部数据
3.sheet_name( str, int, list, None, default 0 )
str字符串用于引用的sheet的名称,int整数 用于引用的sheet的索引(从0开始),字符串或整数组成的列表用于引用特定的sheet,None 表示引用所有sheet
4.names(array-like, default None)
指定列为索引列,默认为None,也就是索引为0的列用作DataFrame的行标签。int整数:指定第几列第几行为所引列。List of int:选择列表中整数列为索引列。
skiprows=lambda x: x % 2 == 0 跳过偶数行
pandas的query()方法是基于DataFrame列的计算代数式,对于按照某列的规则进行过滤的操作,可以使用query方法。
除了直接通过等于某个值来筛选, query 函数还支持通过数学表达式来进行数据筛选,包括 > 、 < 、 + 、 - 、 * 、 / 等。
当需要在某列中筛选多个符合要求的值的时候,可以通过列表(list)来实现,示例如下
在程序比较长的时候,经常会使用变量来作为筛选条件, query 函数在使用变量作为判断标准时,通过在变量前面添加 @ 符号来实现,示例如下
有很多情况下,咱们需要通过多个条件来筛选数据,query 函数支持多种条件的组合,
df.groupby('column').agg(列名 = ('values','sum'))
df.groupby(['column1','column2']).agg(列名 = ('values','sum'))
by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
ascending 是否按指定列的数组升序排列,默认为True,即升序排列
inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position {‘first’,‘last’},设定缺失值的显示位置
一般式:drop([ ],axis=0,inplace=True)