DataFrames with Conditionals


The use of conditionals allows us to select a subset of rows based on the value in each row. Writing a conditional to select rows based on the data in a single column is straightforward and was used when we selected all of the courses taught by the Statistics department with the following code:

Both cells return the exact same output:
Reset Code Python Output:
(Run your code to see your code result's here.)
Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
8002 2019 Fall 2019-fa STAT 100 Statistics First course in probability and statistics at ... 3 hours. Credit is not given for both STAT 100 and any ... Quantitative Reasoning I course.
8003 2019 Fall 2019-fa STAT 107 Data Science Discovery Data Science Discovery is the intersection of ... 4 hours. Same as CS 107 and IS 107. Quantitative Reasoning I course.
8004 2019 Fall 2019-fa STAT 199 Undergraduate Open Seminar See course schedule for topics. Approved for L... 1 TO 5 hours. NaN NaN
8005 2019 Fall 2019-fa STAT 200 Statistical Analysis Survey of statistical concepts, data analysis,... 3 hours. Credit is not given for both STAT 200 and STAT... Quantitative Reasoning I course.
8006 2019 Fall 2019-fa STAT 212 Biostatistics Application of statistical reasoning and stati... 3 hours. Credit is not given for both STAT 212 and STAT... Quantitative Reasoning I course.
8007 2019 Fall 2019-fa STAT 361 Probability & Statistics for Computer Science Same as CS 361. See CS 361. 3 hours. Same as CS 361. See CS 361. NaN
8008 2019 Fall 2019-fa STAT 385 Statistics Programming Methods Statisticians must be savvy in programming met... 3 hours. Prerequisite: STAT 200 or STAT 212. NaN
8009 2019 Fall 2019-fa STAT 390 Individual Study May be repeated to a maximum of 8 hours. Prere... 1 OR 2 hours. May be repeated to a maximum of 8 hours. Prere... NaN
8010 2019 Fall 2019-fa STAT 391 Honors Individual Study May be repeated to a maximum of 8 hours. Prere... 1 OR 2 hours. May be repeated to a maximum of 8 hours. Prere... NaN
8011 2019 Fall 2019-fa STAT 400 Statistics and Probability I Introduction to mathematical statistics that d... 4 hours. Same as MATH 463. 4 undergraduate hours. 4 gra... NaN
8012 2019 Fall 2019-fa STAT 408 Actuarial Statistics I Examines elementary theory of probability, inc... 4 hours. NaN NaN
8013 2019 Fall 2019-fa STAT 409 Actuarial Statistics II Continuation of STAT 408. Examines parametric ... 4 hours. Same as ASRM 402. 4 undergraduate hours. 4 gra... NaN
8014 2019 Fall 2019-fa STAT 410 Statistics and Probability II Continuation of STAT 400. Includes moment-gene... 3 OR 4 hours. Same as MATH 464. 3 undergraduate hours. 4 gra... NaN
8015 2019 Fall 2019-fa STAT 420 Methods of Applied Statistics Systematic, calculus-based coverage of the mor... 3 OR 4 hours. Same as ASRM 450. 3 undergraduate hours. 4 gra... NaN
8016 2019 Fall 2019-fa STAT 424 Analysis of Variance Estimation and hypotheses testing in linear mo... 3 OR 4 hours. NaN NaN
8017 2019 Fall 2019-fa STAT 425 Applied Regression and Design Explores linear regression, least squares esti... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8018 2019 Fall 2019-fa STAT 426 Sampling and Categorical Data Sampling: simple random, stratified, systemati... 3 OR 4 hours. NaN NaN
8019 2019 Fall 2019-fa STAT 427 Statistical Consulting Students, working in groups under the supervis... 3 OR 4 hours. NaN NaN
8020 2019 Fall 2019-fa STAT 428 Statistical Computing Examines statistical packages, numerical analy... 3 OR 4 hours. Same as CSE 428. 3 undergraduate hours. 4 grad... NaN
8021 2019 Fall 2019-fa STAT 429 Time Series Analysis Studies theory and data analysis for time seri... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8022 2019 Fall 2019-fa STAT 430 Topics in Applied Statistics Formulation and analysis of mathematical model... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. May b... NaN
8023 2019 Fall 2019-fa STAT 431 Applied Bayesian Analysis Introduction to the concepts and methodology o... 3 OR 4 hours. NaN NaN
8024 2019 Fall 2019-fa STAT 432 Basics of Statistical Learning Topics in supervised and unsupervised learning... 3 OR 4 hours. Same as ASRM 451. 3 undergraduate hours. 4 gra... NaN
8025 2019 Fall 2019-fa STAT 433 Stochastic Processes A stochastic process is a random process that ... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8026 2019 Fall 2019-fa STAT 434 Survival Analysis Introduction to the analysis of time-to-event ... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8027 2019 Fall 2019-fa STAT 440 Statistical Data Management The critical elements of data storage, data cl... 3 OR 4 hours. Same as CSE 440. 3 undergraduate hours. 4 grad... NaN
8028 2019 Fall 2019-fa STAT 443 Professional Statistics This project-based course emphasizes written, ... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8029 2019 Fall 2019-fa STAT 448 Advanced Data Analysis Several of the most widely used techniques of ... 4 hours. Same as CSE 448. 4 undergraduate hours. 4 grad... NaN
8030 2019 Fall 2019-fa STAT 458 Math Modeling in Life Sciences Same as ANSC 448 and IB 487. See ANSC 448. 3 OR 4 hours. NaN NaN
8031 2019 Fall 2019-fa STAT 480 Data Science Foundations Examines the methods of data management and an... 3 OR 4 hours. 3 undergraduate hours. 4 graduate hours. Prere... NaN
8032 2019 Fall 2019-fa STAT 510 Mathematical Statistics I Distributions, transformations, order-statisti... 4 hours. Prerequisite: STAT 410. NaN
8033 2019 Fall 2019-fa STAT 511 Mathematical Statistics II Bayes estimates, minimaxity, admissibility; ma... 4 hours. NaN NaN
8034 2019 Fall 2019-fa STAT 525 Computational Statistics Various topics, such as ridge regression; robu... 4 hours. NaN NaN
8035 2019 Fall 2019-fa STAT 527 Advanced Regression Analysis An advanced introduction to regression analysi... 4 hours. 4 graduate hours. No professional credit. Prer... NaN
8036 2019 Fall 2019-fa STAT 530 Bioinformatics Same as ANSC 543, CHBE 571, and MCB 571. See C... 4 hours. NaN NaN
8037 2019 Fall 2019-fa STAT 534 Advanced Survival Analysis Introduction to the analysis of time-to-event ... 4 hours. NaN NaN
8038 2019 Fall 2019-fa STAT 538 Clinical Trials Methodology The topics of the course focus on clinical tri... 4 hours. NaN NaN
8039 2019 Fall 2019-fa STAT 541 Predictive Analytics Same as ASRM 552. See ASRM 552. 4 hours. NaN NaN
8040 2019 Fall 2019-fa STAT 542 Statistical Learning Modern techniques of predictive modeling, clas... 4 hours. Same as ASRM 551 and CSE 542. 4 graduate hours... NaN
8041 2019 Fall 2019-fa STAT 543 Appl. Multivariate Statistics Same as CPSC 543. See CPSC 543. 4 hours. NaN NaN
8042 2019 Fall 2019-fa STAT 545 Spatial Statistics Theory and methods for analyzing univariate an... 4 hours. NaN NaN
8043 2019 Fall 2019-fa STAT 546 Machine Learning in Data Science Trains students to analyze large complex data ... 4 hours. NaN NaN
8044 2019 Fall 2019-fa STAT 551 Theory of Probability I Same as MATH 561. See MATH 561. 4 hours. NaN NaN
8045 2019 Fall 2019-fa STAT 552 Theory of Probability II Same as MATH 562. See MATH 562. 4 hours. Same as MATH 562. See MATH 562. NaN
8046 2019 Fall 2019-fa STAT 553 Probability and Measure I Measures and probabilities; integration and ex... 4 hours. Prerequisite: MATH 447 or consent of instructor. NaN
8047 2019 Fall 2019-fa STAT 554 Probability and Measure II Measure extensions, Lebesque-Stieltjes measure... 4 hours. NaN NaN
8048 2019 Fall 2019-fa STAT 555 Applied Stochastic Processes Same as MATH 564. See MATH 564. 4 hours. Same as MATH 564. See MATH 564. NaN
8049 2019 Fall 2019-fa STAT 558 Risk Modeling and Analysis Same as MATH 563. See MATH 563. 4 hours. Same as MATH 563. See MATH 563. NaN
8050 2019 Fall 2019-fa STAT 571 Multivariate Analysis Inference in multivariate statistical populati... 4 hours. Prerequisite: STAT 410 and MATH 415, or consen... NaN
8051 2019 Fall 2019-fa STAT 575 Large Sample Theory Limiting distribution of maximum likelihood es... 4 hours. NaN NaN
8052 2019 Fall 2019-fa STAT 578 Topics in Statistics May be repeated if topics vary. Prerequisite: ... 4 hours. May be repeated if topics vary. Prerequisite: ... NaN
8053 2019 Fall 2019-fa STAT 587 Hierarchical Linear Models Same as PSYC 587 and EPSY 587. See EPSY 587. 4 hours. NaN NaN
8054 2019 Fall 2019-fa STAT 588 Covar Struct and Factor Models Same as EPSY 588, PSYC 588, and SOC 588. See P... 4 hours. NaN NaN
8055 2019 Fall 2019-fa STAT 590 Individual Study and Research Directed reading and research. Approved for le... 0 TO 8 hours. Approved for letter and S/U grading. May be re... NaN
8056 2019 Fall 2019-fa STAT 593 STAT Internship Supervised, off-campus experience in a field i... 0 TO 8 hours. Approved for letter and S/U grading. Prerequis... NaN
8057 2019 Fall 2019-fa STAT 595 Preparing Future Faculty Prepares Ph.D. students who are interested in ... 2 hours. NaN NaN
8058 2019 Fall 2019-fa STAT 599 Thesis Research Approved for S/U grading only. May be repeated... 0 TO 16 hours. Approved for S/U grading only. May be repeated... NaN

The subset of rows where the Subject is exactly equal to STAT (57 rows).

Complex Conditionals with Multiple Parts

As we want to answer more complex questions, we need increasingly complex conditionals. To help understand how a computer works, you may be familiar with the idea that computers ultimately only think in zeros and ones:

  • When a computer stores a zero, we consider that to be False.
  • When a computer stores a one, we consider that to be True.

When we use conditionals, we are assigning a truth value to every single row in the DataFrame.

  • With our conditional df[df.Subject == "STAT"], all rows where the Subject data was "STAT" was assigned a truth value of True and kept in the final result; all other rows were labeled False and discarded.

All programming languages allows us to combine conditionals together in two key ways: with an AND (&) or with an OR (|).

Multiple Conditionals Joined with AND (&)

When we combine two conditionals, we can ask Python to keep only the result where the first conditional AND the second conditional are both True.

Writing a conditional with multiple parts requires the use of parenthesis around each individual conditional and an operation joining the two conditionals together. For example, using the Course Catalog dataset, we want all of the courses that are taught by Computer Science (CS) with a course number less than 300:

Reset Code Python Output:
(Run your code to see your code result's here.)

Both the first (Subject is exactly equal to "CS") and second (Number is less than 300) conditionals are checked independently. Since an AND (&) is used to join these two conditionals, the final truth value is True only when both conditionals are True:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
2310 2019 Fall 2019-fa CS 100 Freshman Orientation Introduction to Computer Science as a field an... 1 hours. NaN NaN
2311 2019 Fall 2019-fa CS 101 Intro Computing: Engrg & Sci Fundamental principles, concepts, and methods ... 3 hours. Prerequisite: MATH 220 or MATH 221. Quantitative Reasoning II course.
2312 2019 Fall 2019-fa CS 102 Little Bits to Big Ideas Same as INFO 102. See INFO 102. 4 hours. NaN NaN
2313 2019 Fall 2019-fa CS 105 Intro Computing: Non-Tech Computing as an essential tool of academic and... 3 hours. Prerequisite: MATH 112. Quantitative Reasoning I course.
2314 2019 Fall 2019-fa CS 107 Data Science Discovery Same as IS 107 and STAT 107. See STAT 107. 4 hours. Same as IS 107 and STAT 107. See STAT 107. Quantitative Reasoning I course.
2315 2019 Fall 2019-fa CS 125 Intro to Computer Science Basic concepts in computing and fundamental te... 4 hours. Prerequisite: Three years of high school mathe... Quantitative Reasoning I course.
2316 2019 Fall 2019-fa CS 126 Software Design Studio Fundamental principles and techniques of softw... 3 hours. Credit is not given for both CS 242 and CS 126... NaN
2317 2019 Fall 2019-fa CS 173 Discrete Structures Discrete mathematical structures frequently en... 3 hours. Credit is not given for both CS 173 and MATH 2... NaN
2318 2019 Fall 2019-fa CS 196 Freshman Honors Offered for honors credit in conjunction with ... 1 hours. May be repeated. Prerequisite: Concurrent regi... NaN
2319 2019 Fall 2019-fa CS 199 Undergraduate Open Seminar in Computer Science Topics vary. Approved for Letter and S/U gradi... 0 TO 5 hours. Approved for Letter and S/U grading. May be re... NaN
2320 2019 Fall 2019-fa CS 210 Ethical & Professional Issues Ethics for the computing profession. Ethical d... 2 hours. Credit is not given for both CS 210 and ECE 31... NaN
2321 2019 Fall 2019-fa CS 225 Data Structures Data abstractions: elementary data structures ... 4 hours. Prerequisite: CS 125 or ECE 220; CS 173 or MAT... Quantitative Reasoning II course.
2322 2019 Fall 2019-fa CS 233 Computer Architecture Fundamentals of computer architecture: digital... 4 hours. Prerequisite: CS 125 and CS 173; credit or con... NaN
2323 2019 Fall 2019-fa CS 240 Introduction to Computer Systems Basics of computer systems. Number representat... 3 hours. NaN NaN
2324 2019 Fall 2019-fa CS 241 System Programming Basics of system programming, including POSIX ... 4 hours. Credit is not given for both CS 241 and ECE 39... NaN
2325 2019 Fall 2019-fa CS 242 Programming Studio Intensive programming lab intended to strength... 3 hours. Prerequisite: CS 241. NaN
2326 2019 Fall 2019-fa CS 296 Honors Course Group projects for honors credit in computer s... 1 hours. May be repeated. Prerequisite: Concurrent regi... NaN

All CS courses with course numbers less than 300 (17 rows).

Python allows us to continue to apply conditionals together infinitely long -- so it's no problem to have three conditionals:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
2311 2019 Fall 2019-fa CS 101 Intro Computing: Engrg & Sci Fundamental principles, concepts, and methods ... 3 hours. Prerequisite: MATH 220 or MATH 221. Quantitative Reasoning II course.
2313 2019 Fall 2019-fa CS 105 Intro Computing: Non-Tech Computing as an essential tool of academic and... 3 hours. Prerequisite: MATH 112. Quantitative Reasoning I course.
2316 2019 Fall 2019-fa CS 126 Software Design Studio Fundamental principles and techniques of softw... 3 hours. Credit is not given for both CS 242 and CS 126... NaN
2317 2019 Fall 2019-fa CS 173 Discrete Structures Discrete mathematical structures frequently en... 3 hours. Credit is not given for both CS 173 and MATH 2... NaN
2323 2019 Fall 2019-fa CS 240 Introduction to Computer Systems Basics of computer systems. Number representat... 3 hours. NaN NaN
2325 2019 Fall 2019-fa CS 242 Programming Studio Intensive programming lab intended to strength... 3 hours. Prerequisite: CS 241. NaN

All CS courses with course numbers less than 300 and exactly 3 credit hours (6 rows).

Multiple Conditionals Joined with OR (|)

Alternatively, Python can combine two conditionals together and keep the result when either the first conditional OR the second conditional is True (this includes when they're both True as well!). There are two major applications when this is useful:

  1. Selecting multiple values of data from the same column (ex: all courses in "ARTD" OR "ARTE" OR "ARTF").
  2. Selecting multiple values from different columns and keeping all matches (ex: all courses in "PSYC" OR courses that are only 1 credit hour).

Selecting Multiple Values of Data from the Same Column

Looking at the first example above, the University of Illinois has a lot of courses in art across many different sub-areas of art including: Art Design ("ARTD"), Art Education ("ARTE"), Art Foundation ("ARTF"), Art History ("ARTH"), and Art Studio ("ARTS").

To include ALL courses from all five sub-areas of art listed above, we must join them together with an OR (|). Notice that it is necessary to specify each conditional completely each time even though we are always comparing the subject since Python has to evaluate each conditional independently and then combine the results together:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
1004 2019 Fall 2019-fa ARTD 101 Introduction to Industrial Design Introduction to problem-finding and problem-so... 3 hours. Additional fees may apply. See Class Schedule.... NaN
1005 2019 Fall 2019-fa ARTD 151 Introduction to Graphic Design An introductory course for students considerin... 3 hours. Additional fees may apply. See Class Schedule.... NaN
1006 2019 Fall 2019-fa ARTD 160 The Image World Explores photography and video as the most pow... 3 hours. Additional fees may apply. See Class Schedule.... NaN
1007 2019 Fall 2019-fa ARTD 201 Industrial Design I Introduction to the creative process and metho... 4 hours. Additional fees may apply. See Class Schedule.... NaN
1008 2019 Fall 2019-fa ARTD 202 Industrial Design II Studio design problems of increasing complexit... 4 hours. NaN NaN
... ... ... ... ... ... ... ... ... ... ...
1220 2019 Fall 2019-fa ARTS 490 Senior Honors Independent creative activity, guided study, o... 2 TO 5 hours. 2 to 5 undergraduate hours. No graduate credit... NaN
1221 2019 Fall 2019-fa ARTS 499 Special Topics in Studio Art Special topics in studio arts. Topics and subj... 1 to 4 hours. NaN NaN
1222 2019 Fall 2019-fa ARTS 591 Graduate Studio Directed individual creative activity or resea... 1 TO 8 hours. Additional fees may apply. See Class Schedule.... NaN
1223 2019 Fall 2019-fa ARTS 593 Seminar: Methods Criticism Prerequisite: Graduate standing in art. 1 TO 4 hours. Prerequisite: Graduate standing in art. NaN
1224 2019 Fall 2019-fa ARTS 595 Graduate Laboratory Individually directed research and personal. A... 4 TO 12 hours. Additional fees may apply. See Class Schedule.... NaN

All courses in any subjects ARTD, ARTE, ARTF, ARTH, OR ARTS (221 rows).

Selecting Multiple Values from Different Columns and Keeping All Matches

To be considered a "full-time student" at most universities, you must be enrolled in at least 12 credit hours. If you are only enrolled in 11 credit hours, you may be interested in any course that will bump you up to exactly 12 credit hours (ex: a course worth exactly one credit hour) or a course you may be interested in (ex: something from the psychology ("PSYC") department).

To include ALL of the results of all courses that are either one credit hour OR in the psychology department, we need an OR:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
49 2019 Fall 2019-fa ABE 100 Intro Agric & Biological Engrg Introduction to the engineering profession wit... 1 hours. NaN NaN
83 2019 Fall 2019-fa ABE 501 Graduate Research I Basic research orientation, research methods, ... 1 hours. NaN NaN
84 2019 Fall 2019-fa ABE 502 Graduate Research II Research methodology, teaching methods, lectur... 1 hours. NaN NaN
229 2019 Fall 2019-fa ACE 569 Career Development for PhDs This course is intendedto help doctoral candid... 1 hours. Approved for S/U grading only. Prerequisite: A... NaN
245 2019 Fall 2019-fa ACES 399 Honors Seminar Designed to promote exposure to, and subsequen... 1 hours. NaN NaN
... ... ... ... ... ... ... ... ... ... ...
8559 2019 Fall 2019-fa VM 626 The Basics of Business Business principles related to managing a vete... 1 hours. 1 graduate hour. 1 professional hour. Prerequi... NaN
8560 2019 Fall 2019-fa VM 627 Fundamentals of Finance Provides students with a strong introductory b... 1 hours. NaN NaN
8562 2019 Fall 2019-fa VM 642 Contemporary Issues in Vet Med An introductory course for first year veterina... 1 hours. NaN NaN
8563 2019 Fall 2019-fa VM 643 Fundamentals of Management An introductory course for second year veterin... 1 hours. No graduate credit. 1 professional hour. Appro... NaN
8564 2019 Fall 2019-fa VM 645 Communications in Practice An introductory course for third year veterina... 1 hours. NaN NaN

All courses that are exactly one credit hour OR in the psychology department (490 rows).

Combining ANDs and ORs

The most complex conditionals will require a combination of both AND and OR statements. These can get incredibly tricky, but we can remember that Python will always process conditionals by only combining two conditionals together at a time.

Since Python combines only two conditionals together at any given time, it is critical we use parenthesis to ensure we specify the order that we want these conditionals combined. For example, let's explore only junior level (300-399) courses in Chemistry or Physics. To do so:

  • The subject of the course must be CHEM or PHYS.
  • The course number must be greater than or equal to 300.
  • The course number must also be less than 400.

Naively writing this conditional results in the following code:

Reset Code Python Output:
Please note that this cell will not output anything

Default Order of Evaluation: AND before OR

If we do not use additional parenthesis, Python will always combine the ANDs first and then the ORs and will do so in left-to-right order. This means that:

  1. The first set of two conditionals combined will be the first AND conditional: (df.Subject == "PHYS") & (df.Number >= 300). The result contains all courses in PHYS with a number larger than 300.

  2. The second set of two conditionals will be the result from #1 with the second AND: (Result of Step #1) & (df.Number < 400). The result contains all courses in PHYS with a number from 300-399.

  3. The final set of conditionals will be combined using OR: (df.Subject == "CHEM") | (Result of Step #2). Since this is an OR, the result is ALL CHEM courses and then only the PHYS courses in the number 300-399.

We can verify our result by running the code:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
1872 2019 Fall 2019-fa CHEM 312 Inorganic Chemistry Basic chemical bonding in molecules, introduct... 3 hours. Prerequisite: CHEM 232 or CHEM 236. NaN
1873 2019 Fall 2019-fa CHEM 315 Instrumental Chem Systems Lab Laboratory course emphasizes the application o... 2 hours. Prerequisite: Either CHEM 237 or both CHEM 223... NaN
1874 2019 Fall 2019-fa CHEM 317 Inorganic Chemistry Lab Emphasizes modern techniques for the synthesis... 3 hours. NaN Advanced Composition course.
1875 2019 Fall 2019-fa CHEM 332 Elementary Organic Chem II Continuation of CHEM 232 focuses on organic ch... 4 hours. Credit is not given for both CHEM 332 and CHEM... NaN
1876 2019 Fall 2019-fa CHEM 360 Chemistry of the Environment Study of the chemistry of the atmosphere, the ... 3 hours. NaN NaN
... ... ... ... ... ... ... ... ... ... ...
6859 2019 Fall 2019-fa PHYS 583 Advanced Field Theory Quantization and Feynman path integral; gauge ... 4 hours. NaN NaN
6860 2019 Fall 2019-fa PHYS 596 Graduate Physics Orientation Introduction to research in the Department of ... 1 hours. NaN NaN
6861 2019 Fall 2019-fa PHYS 597 Individual Study Individual study in a subject not covered in c... 1 TO 16 hours. May be repeated. 2 to 16 hours for full term; ... NaN
6862 2019 Fall 2019-fa PHYS 598 Special Topics in Physics Subject offerings of new and developing areas ... 1 TO 4 hours. May be repeated in the same or separate terms ... NaN
6863 2019 Fall 2019-fa PHYS 599 Thesis Research Approved for S/U grading only. May be repeated. 0 TO 16 hours. Approved for S/U grading only. May be repeated. NaN

The output of incorrect logic that does use parenthesis, which includes 500-level PHYS courses (92 rows).

Notice that the code appears correct until we scroll down! The courses in Chemistry start at 300, but the last five rows show us that the courses in Physics include 500-level courses -- yikes!

Order of Evaluation: Using Parenthesis to Specify Order

Python uses parenthesis in a similar way to basic mathematics where the inner-most operations are done first. In our example, we want to make sure that all Chemistry and Physics courses are combined first, and only then can we limit the range of course numbers to the junior level.

By grouping both of these logical operations together, our new conditional can be thought of as a combination of two complex conditionals:

  1. (df.Subject == "CHEM") | (df.Subject == "PHYS"), selecting only that are Chemistry OR Physics

  2. (df.Number >= 300) & (df.Number < 400), selecting only courses between 300 AND 399.

Joining these two conditionals together with an AND results in the exact output we expect:

Reset Code Python Output:
Year Term YearTerm Subject Number Name Description Credit Hours Section Info Degree Attributes
1872 2019 Fall 2019-fa CHEM 312 Inorganic Chemistry Basic chemical bonding in molecules, introduct... 3 hours. Prerequisite: CHEM 232 or CHEM 236. NaN
1873 2019 Fall 2019-fa CHEM 315 Instrumental Chem Systems Lab Laboratory course emphasizes the application o... 2 hours. Prerequisite: Either CHEM 237 or both CHEM 223... NaN
1874 2019 Fall 2019-fa CHEM 317 Inorganic Chemistry Lab Emphasizes modern techniques for the synthesis... 3 hours. NaN Advanced Composition course.
1875 2019 Fall 2019-fa CHEM 332 Elementary Organic Chem II Continuation of CHEM 232 focuses on organic ch... 4 hours. Credit is not given for both CHEM 332 and CHEM... NaN
1876 2019 Fall 2019-fa CHEM 360 Chemistry of the Environment Study of the chemistry of the atmosphere, the ... 3 hours. NaN NaN
1877 2019 Fall 2019-fa CHEM 397 Individual Study Junior Individual study of problems related to chemis... 1 TO 3 hours. May be repeated in separate terms. A maximum o... NaN
6807 2019 Fall 2019-fa PHYS 325 Classical Mechanics I Kinematics and dynamics of classical systems, ... 3 hours. Prerequisite: PHYS 225; credit or concurrent r... NaN
6808 2019 Fall 2019-fa PHYS 326 Classical Mechanics II Continuation of PHYS 325. Central force motion... 3 hours. Prerequisite: PHYS 325. NaN
6809 2019 Fall 2019-fa PHYS 329 Atmospheric Dynamics I Same as ATMS 302. See ATMS 302. 3 hours. Same as ATMS 302. See ATMS 302. NaN
6810 2019 Fall 2019-fa PHYS 330 Atmospheric Dynamics II Same as ATMS 312. See ATMS 312. 3 hours. NaN NaN
6811 2019 Fall 2019-fa PHYS 398 Sophomore/Junior Special Topics in Physics Topical offerings of technical interest, skill... 1 TO 4 hours. Approved for Letter and S/U grading. May be re... NaN

All 300-level courses in chemistry or physics (11 rows).


Example Walk-Throughs with Worksheets

Video 1: Observational Studies Examples

Follow along with the worksheet to work through the problem:

Video 2: Experimental Design Examples

Follow along with the worksheet to work through the problem:

Video 3: Stratification Examples

Follow along with the worksheet to work through the problem:

Practice Questions

Q1: Which answer shows two statements that will create the same subset of rows?
Q2: You're looking for a new apartment for you and your cat and using a dataset "apartments" to look at listings. How would you filter the dataset in Python to only show pet-friendly listings, using the column "PetFriendly" which is either True or False?
Q3: A dataset "restaurants" contains the columns "Name", "Location", and "Rating" with ratings ranging from 0-100. How would you filter to only restaurants with a rating greater than 90 in Python?
Q4: How would you subset a DataFrame titled "restaurants" with columns "food_type" and "location" to only show pizza places in Urbana using Python?
Q5: What best describes what rows are being selected by this conditional statement: movies[ (movies.genre == "Horror") | (movies.genre == "Action") & (movies.rating >= 90) ]
Q6: How would you fix the following code that is attempting to selet all STAT and CS courses that are 3 credit hours and level 200 or higher?
Q7: Which of the following would NOT be a situation where you would want to use the OR (|) conditional in Python?
Q8: Which conditional operation in Python would you want to use if you're selecting multiple values of data from the same column?