pandas中修改数据类型与numpy一样。
b = a.astype("float") print(b) # a中的astype并没有改变可直接用pd.read_csv(),读取的数据是DataFrame类型。
DataFrame对象既有行索引,又有列索引: 行索引表明不同行,叫index(同pd.Series中index),0轴,axis=0; 列索引表明不同列,叫columns,1轴,axis=1.
通过字典创建 dic = {'name': ["xiaoming", "xiaohong"], "age": [18, 19], "sex":["male", "female"]} a = pd.DataFrame(dic) print(a) # name age sex # 0 xiaoming 18 male # 1 xiaohong 19 female可以注意到,字典的键变成了列索引(每一行代表一条数据)。 或者,列表里储存多个不同的字典:
s = [{"name": "xiaoming", "age": 18,"sex": "male"}, {"name": "xiaohong"}, {"name": "xiaozhang", "sex": "female"}] a = pd.DataFrame(s) print(a) # name age sex # 0 xiaoming 18.0 male # 1 xiaohong NaN NaN # 2 xiaozhang NaN female1. t.loc 通过标签进行索引
print(a.loc["a"]) # A 0 # B 1 # C 2 # D 3 print(a.loc[["a", "c"]]) # A B C D # a 0 1 2 3 # c 8 9 10 11 print(a.loc[["a", "c"], "B"]) # a 1 # c 9 # Name: B, dtype: int32 pri若:
a = pd.DataFrame(np.arange(12).reshape(3, 4), columns=list("ABCD")) print(a) # A B C D # 0 0 1 2 3 # 1 4 5 6 7 # 2 8 9 10 11 print(a.loc[0]) # A 0 # B 1 # C 2 # D 3 # Name: 0, dtype: int32 print(a.loc[[0, 2], "B"]) print(a.loc["a", "A":"C"]) # 能取到C!!!冒号在loc里是闭合的! # A 0 # B 1 # C 2 Name: a, dtype: int322.== t.iloc ==通过位置进行索引
print(a.iloc[0]) # A 0 # B 1 # C 2 # D 3 # Name: a, dtype: int32 print(a.iloc[[0, 2], [0, 2]]) # A C # a 0 2 # c 8 10 print(a.iloc[[0, 2], 0:2]) # 取不到2!!!! # A B # a 0 1 # c 8 9可进行赋值操作。
1. 排序(t.sort_values)
t = t.sort_values(by="money") # 默认升序,细节可查看源码2. 布尔索引 以上情况会报错,应该 即,不同的条件之间应该用括号括起来,用&连接。 3. 字符串方法 字符串方法应用于Series的每一个字符串 例: 拆分成series,然后可用 tolist() 方法将其转换为列表:
在pandas中,计算均值等操作不会把NaN计算进去!
一组从2006年到2016年1000部最流行的电影数据,想知道这些电影数据中评分的平均分、导演人数等信息。 数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data
import pandas as pd df = pd.read_csv('/content/drive/My Drive/IMDB-Movie-Data.csv') df.info() df.head(1) # 获取电影的平均评分 df['Rating'].mean() # 获取导演人数 len(df["Director"]) # 1000(可能有重复) # 获取导演人数 len(set(df['Director'])) # 644 len(df["Director"].unique()) # 644 # 获取演员人数 type(df['Actors']) # pandas.core.series.Series df["Actors"][0] # ‘Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana’ df["Actors"].str.split(',') # pandas.core.series.Series 即Series中存放了列表 # 结果如下图所示 df['Actors'].str.split(",").tolist() # 列表嵌套列表 pre_actors_list = df["Actors"].str.split(",").tolist() actor_list = [i for j in pre_actors_list for i in j] actor_num = len(set(actor_list)) # actor_num = len(np.unique(actor_list)) # np.unique() 可作用于一维数组或列表 actor_num
见《利用Python进行数据分析》P274